Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Powershell バッチ処理 (Batch Scripts)

バッチから引数を与えてPowershellを実行する方法

投稿日:

<目次>

(1) バッチからPowershellを実行する方法
 (1-1) 構文①
 (1-2) 構文②
(2) バッチから引数を与えてPowershellを実行する方法
 (2-1) 引数を表現する「%N」の記述について
 (2-2) サンプルプログラム

(1) バッチからPowershellを実行する方法

書き方が2通りほどあり、1つはPowershellの実行ファイル(Powershell.exe)に引数を与えて実行する方法と、その短縮表記の「powershell」にファイルを指定して実行する方法があります。

(1-1) 構文①

(構文①)

Powershell.exe -File [フォルダパス]\[PowerShellファイル名].ps1

(表)頻出の引数についての補足

オプション 概要
-File 実行するPowershellのファイルパスを指定します。
-ExecutionPolicy ・「ExecutionPolicy」はどの種類のPowershellがシステム上で実行できるか?を決定づける「安全制御」のための設定です。
・Windowsではユーザーや特定のセッションに対して、この「実行ポリシー(Execution Policy)」を設定できます。
・設定情報はレジストリに保存されており、Powershellのプロファイルでは特に設定する必要がありません。
・デフォルトでは「Restricted」に設定されており、何も実行できない設定になっています。
・ただし、これはユーザのアクションを制限できる設定ではなく、簡単にバイパスする事ができます。そのため、あくまでデフォルト値をセットして「誤作動」を防止する目的の設定となります。
・取り得る値は「Bypass」や「Unrestricted」などを指定できます。

目次にもどる

(1-2) 構文②

(構文②)
こちらの表記ではファイルパスをダブルクォーテーション「”」で囲っています。

powershell "[フォルダパス]\[PowerShellファイル名].ps1;"

 

目次にもどる

(2) バッチから引数を与えてPowershellを実行する方法

(2-1) 引数を表現する「%N」の記述について

コマンドライン引数を表す特殊な表記です。「%1」は1つ目のコマンドライン引数、「%2」は2つ目のコマンドライン引数、といった具合で「%9」まで9個用意されています。
また「%0」のみ特殊な意味を持っており、バッチファイル自身を呼ぶためのコマンドです。形式は「xxx.bat、…\xxx.bat」など様々です。

(表)引数を表現する「%N」の意味

%0 バッチファイル自身を呼ぶためのコマンドです。形式は「xxx.bat、…\xxx.bat」など様々です。
%1 1つ目のコマンドライン引数
%2 2つ目のコマンドライン引数
%3 3つ目のコマンドライン引数
%4 4つ目のコマンドライン引数
%5 5つ目のコマンドライン引数
%6 6つ目のコマンドライン引数
%7 7つ目のコマンドライン引数
%8 8つ目のコマンドライン引数
%9 9つ目のコマンドライン引数

目次にもどる

(2-2) サンプルプログラム

「構文①」と「構文②」それぞれでサンプルを分けてご紹介します。処理内容は「構文①」バージョンも「構文②」バージョンも同じで、バッチ処理の中で引数を与えてPowershellを呼び出している点は全く同じです(表記法の違いのみ)。

(図220)

(呼び出し先のPowershell)

$w = $args[0]
echo "### Test3.ps1 is executed"
echo "### argument value is : " $w

(呼び出し元の「.bat」構文①バージョン)

@echo off
setlocal ENABLEDELAYEDEXPANSION 
echo ### Test1.bat is executed

rem ===(1) 実行中のバッチファイル自身の名前を取得
set val= %~nx0
echo !val!

rem ===(2) バッチから引数を与えてPowershellを実行 
powershell "C:\Temp2\IT0222\Test3.ps1 !val!"

(図221)実行結果

(呼び出し元の「.bat」構文②バージョン)

@echo off
setlocal ENABLEDELAYEDEXPANSION 
echo ### Test2.bat is executed
rem ===(1) 実行中のバッチファイル自身の名前を取得
set val= %~nx0
echo !val!

rem ===(2) バッチからPowershellを実行 
Powershell.exe -File  C:\Temp2\IT0222\Test3.ps1 !val!

(図222)実行結果

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Powershell, バッチ処理 (Batch Scripts)

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

バッチ処理の使用例やシステムにおける役割をご紹介

  <目次> (1) バッチ処理の使用例やシステムにおける役割をご紹介  (1-1) バッチ処理の利用方針(大方針)  (1-2) バッチ処理の使用例  (1-3) バッチ処理を運用する仕組 …

バッチ処理のパイプ「| の使い方が誤っています。」エラーの原因と対処について

<目次> (1) バッチ処理のパイプ「| の使い方が誤っています。」エラーの原因と対処について  (1-1) エラー概要  (1-2) エラー原因  (1-3) エラー対処 (1) バッチ処理のパイプ …

Powershellで文字列のダブルクォーテーションを削除する方法

<目次> (1) Powershellで文字列のダブルクォーテーションを削除する方法  (1-1) 方法1:.NETのString.Formatメソッドを使う方法  (1-2) 方法2:Powersh …

バッチでログファイルを出力+ファイル名に日時間を付与する

<目次> (1) バッチでログファイルを出力+ファイル名に日時間を付与する  (1-1) 構文  (1-2) サンプルプログラム  (1-3) 簡単な操作手順動画 (1) バッチでログファイルを出力+ …

Powershellのハッシュテーブル(hashtable)の作成方法や値の取得方法をご紹介

<目次> (1) Powershellのハッシュテーブル(hashtable)の作成方法や値の取得方法をご紹介  (1-1) ハッシュテーブルとは?  (1-2) ハッシュテーブルの構文  (1-3) …

  • English (United States)
  • 日本語
Top