【PowerShell】Invole-Command –FilePath パラメタの魔法

Invoke-Command を使用するとリモートコンピューター上でコマンドレットを実行することができます。このとき、コマンドレット単体ではなく、スクリプトファイル(.ps1)を使用することができます。

Invoke-Command で .ps1 ファイルを使用する方法は2つあります。

Invoke-Command -ComputerName SV01 -FilePath .\hogehoge.ps1

Invoke-Command -ComputerName SV02 {.\hogehoge.ps1}

前者と後者の違い、わかりますか?

前者の場合は、スクリプトファイルのパスはローカルコンピューターです。後者の場合は、リモートコンピューター内のパスになります。

image

リモートコンピューターにコマンドレットが存在することさえ確認できていれば、スクリプトファイルをいちいち送信しなくてもよいというのは非常に便利なことです。

(参考)【PowerShell】Hyper-V 系コマンドレットを手元の Windows 7 から実行するには ~ Import-PSSession

ちなみに、指定した ps1 ファイルに引数を指定したい場合にはどうしたらよいでしょう?

以下のように、-ArgumentList パラメタを使用して指定します。

Invoke-Command -ComputerName SV01 -FilePath .\hogehoge.ps1 -ArgumentList “Arg1",“Arg2",“Arg3"

PowerShell...知れば知るほど奥が深いです。