web-dev-qa-db-ja.com

PowershellスクリプトでEnter-PSSessionが機能しない

スクリプトから以下の行を実行すると、ファイルはローカルマシンで作成されます。

$cred = Get-Credential domain\DanTest
Enter-PSSession -computerName xsappb01 -credential $cred

New-Item -type file c:\temp\blahxsappk02.txt

exit-pssession

PowerShellコンソールから各行を個別に実行すると、リモートセッションが正しく作成され、リモートマシンにファイルが作成されます。理由について何か考えはありますか?おそらくスクリプトのタイミングの問題ですか?

34
Dan Snell

タイミングの問題かどうかはわかりません。 Enter-PSSessionがネストされたPromptのようなものを呼び出しており、その後のコマンドがその中で実行されていないようです。とにかく、Enter/Exit-PSSessionはスクリプトの使用ではなく、インタラクティブな使用を目的としています。スクリプトの場合、New-PSSessionを使用して、そのセッションインスタンスをInvoke-Commandに渡します。例:

$cred = Get-Credential domain\DanTest 
$s = New-PSSession -computerName xsappb01 -credential $cred
Invoke-Command -Session $s -Scriptblock {New-Item -type file c:\temp\blah.txt}
Remove-PSSession $s
65
Keith Hill