Invoke-Expression の使い方について、サンプルコードを用いて説明します。
スクリプトブロックを実行 (引数なし)
$cmd = {Get-ChildItem}
$cmd.Invoke()
スクリプトブロックを実行 (引数あり)
$cmd = {Write-Host $args}
$cmd.Invoke(1,2,3)
スクリプトブロックを実行 (引数あり)
$cmd = {Write-Host $args[0]}
$cmd.Invoke(1)
スクリプトブロックを実行 (引数あり)
[ScriptBlock]$cmd = {Get-ChildItem}
Invoke-Command $cmd
スクリプトブロックを実行 (引数あり)
$cmd = {Write-Host $args[0] $args[1]}
&$cmd "Hello,", "World!"
PARAM を使用して、名前付き引数を処理
$cmd = {PARAM ([string]$Name, [int]$ID) "Name = $Name, ID= $ID"}
&$cmd -Name "Yamada" -ID 1234
スクリプトブロックを実行
$cmd = {Get-ChildItem}
&$cmd