私は次のコードを書きました:
cls
function GetFoo() {
function GetBar() {
$bar = "bar"
$bar
}
$foo = "foo"
$bar = GetBar
$foo
$bar
}
$cred = Get-Credential "firmwide\srabhi_adm"
$result = Invoke-Command -Credential $cred -ComputerName localhost
-ScriptBlock ${function:GetFoo}
Write-Host $result[0]
Write-Host $result[1]
GetBar
動作しますが、内部で定義したくありませんGetFoo
。
このようなことはできますか?
cls
function GetBar() {
$bar = "bar"
$bar
}
function GetFoo() {
$foo = "foo"
$bar = GetBar
$foo
$bar
}
$cred = Get-Credential "firmwide\srabhi_adm"
$result = Invoke-Command -Credential $cred -ComputerName localhost
-ScriptBlock ${function:GetFoo; function:GetBar; call GetFoo}
Write-Host $result[0]
Write-Host $result[1]
基本的に、必要な関数を ScriptBlock に選択的に配置し、そのうちの 1 つを呼び出しています。この方法では、関数内で関数を定義する必要がなく、その ScriptBlock の一部になりたい関数を注入することで ScriptBlock を構築できます。