$username = "username"
$password = convertto-securestring "*****" -asplaintext -force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
$session = New-PSSession -computername 'testserver' -credential $cred
Invoke-Command -Session $session -ScriptBlock {New-NetIPAddress -IPAddress 10.201.10.10 -InterfaceAlias 'LoadBalancer' -AddressFamily IPv4 -PrefixLength 24}
Remove-PSSession -Session $session
上記のスクリプトは VMM サーバーからは正常に実行されますが、サイト回復計画の一部として含めると失敗します。
Azure からのエラー メッセージ: スクリプト例外: パラメーター 'Session' の引数を検証できません。引数が null または空です。null または空ではない引数を指定して、コマンドを再試行してください。
どこが間違っているのでしょうか?
答え1
スクリプト作成はそれほど得意ではありませんが、私が指摘したことが正しい答えにつながることを願っています。
$session = New-PSSession -computername 'testserver' -credential $cred -> 指定されたコンピューター上にセッションを作成します。 $session -> そのセッションは作成されているので、これは必要ないと思います。 ... $session - セッションは既に実行されているためです。同じセッションを再度呼び出す必要はないと思います。 Remove-PSSession $session -> 渡す変数は、さらに別のセッションを作成するためのものです。既存のセッションを削除するものではありません。ここでは、サーバー名またはそのサーバー上のセッションの ID を指定するだけでよいと思います。
答え2
この問題の解決策を見つけました。 VMM がスクリプトを正常に実行したにもかかわらず、Azure はエラーを表示していました。 主にスクリプトの最後の行に関するエラーでした。 最後の行を次のように変更したところ、正常に動作するようになりました。
削除-PSSession -セッション $session