暗号化されたファイルから読み込まれ、ScriptBlockに変換されたコードを実行しています。コードは、完全な複雑なスクリプトであるが、簡単のためのそれは、次のされているとさせます。以下はスクリプトブロック解析の問題
"$(date) Agent started." | Out-File -FilePath 'C:\TMP\test_agent.log' -Append
while($true) {
'$(date) Will check back in 30 seconds...' | Out-File -FilePath 'C:\TMP\test_agent.log' -Append
Start-Sleep -Seconds 30
}
それを起動する簡単なコードで、それだけで正常に動作します($sStr
変数は、上記のようなスクリプトが含まれています文字列):
$job = Start-Job -ScriptBlock {
$sb = $executioncontext.invokecommand.NewScriptBlock($args[0])
Invoke-Command -ScriptBlock $sb
} -ArgumentList $sStr | Wait-Job -Timeout 1 | Receive-Job
また、これは正常です。しかし、私はこれを新しいPowerShellプロセスとして実行する必要があります。しかし、私が以下を試してみると、ScriptBlockは正しく解析されず、エラーが発生します。ここでは修正さランチャーは次のとおりです。
$job = Start-Job -ScriptBlock {
$sb = $executioncontext.invokecommand.NewScriptBlock($args[0])
powershell "Invoke-Command -ScriptBlock $sb"
} -ArgumentList $sStr | Wait-Job -Timeout 1 | Receive-Job
のScriptBlockが正しく解析され、実行されるように、新しいPowerShellプロセスを開始する(と親を殺す)する方法? ありがとう!
質問を編集して、受け取ったエラーのテキストを含めてください。役に立つアドバイスが必要な場合は、これが必要です。 –
[ツアー]を取って[お問い合わせ]ページを読むこともお勧めです。 – robinCTS