これは私を混乱させるか、ここ数日間混乱させてきました。 paramを
ConvertTo-SecureString
に渡すことができません
、スクリプト定義変数のみ。
スクリプトを実行するとき、いくつかのパラメーターを渡します。必要なタスクの1つは、PSSessionを介してリモートマシンに接続することです。
./myscript.ps1 -VMPass "12345@!" -VMuser abc
私のスクリプトには、次のものがあり、
New-PSSession
に渡されます
:
[CmdletBinding()]
Param(
$VMuser,
$VMPass
)
$PWord = ConvertTo-SecureString -AsPlainText -String "$VMPass" -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $VMuser, $PWord
$NewVMSession = (New-PSSession -ComputerName $NewVMAddress -Credential $cred -ErrorAction Stop)
これを実行すると、次のエラーが表示されます。
New-PSSession:[WIN-V2BK0KCPC7H]リモートサーバーWIN-V2BK0KCPC7Hへの接続 次のエラーメッセージで失敗しました:アクセスが拒否されました。詳細については、 about_Remote_Troubleshootingヘルプトピックを参照してください。 C:\ Users \ ChildsC \ Documents \ Git \ BAIC \ Controller.ps1:85文字:26 + ... MSession =(New-PSSession -ComputerName $NewVMAddress -Credential $vm ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ + CategoryInfo:OpenError:(System.Manageme .... RemoteRunspace:RemoteRunspace)[New-PSSession]、PSRemotingTransportException + FullyQualifiedErrorId:AccessDenied、PSSessionOpenFailed
ただし、
$VMPass = "12345@!"
を明示的に定義する場合 スクリプト内で、または
Get-Credential
を呼び出す場合正常に動作します。
そのため、paramが渡される方法に小さな問題があります。
返事が遅くなってごめん。
後で、変数を介して渡すのではなく、スクリプトでパスワードを明示的に呼び出そうとしたときに、断続的な接続の問題に直面していました。
上記と同じスクリプトを使用して、既にドメインにあるマシンに接続する場合、正常に動作します。この問題は、マシンがドメインに接続されていない場合にのみ発生するようです。
OSテンプレートのセットアップについて考えていましたが、OUが多すぎるため、テンプレートを使用してドメインにVMをセットアップすることはできません。
私の回避策は、ファイアウォールを無効にすることです。 VMをドメインに接続するスクリプトがあり、追加したらファイアウォールを再度有効にできます。
私はこれに特に満足しているわけではありませんが、今のところ機能し、一貫している唯一のものです。ここで詳しく説明するように、特定のポートをいくつか開いてみました。 https://blogs.technet.microsoft.com/christwe/2012/06/20/what-port-does-powershell-remoting-use/
しかし、私は再び一貫した結果を得ていませんでした。しかし、ファイアウォールは問題であることがわかっているので、後で戻ってどのポートを開くべきかを判断できます。私は誰かが何かを持っている場合、これを行う方法についてのアイデアを受け入れています:)。
これを回答済みとしてマークします。
御時間ありがとうございます。
認証の試行が有効であることを確認するには、ドメイン資格情報のユーザー名を
DomainName\UserName
としてフォーマットすることを忘れないでください 。適切な-Authentication
を提供する必要がある場合もありますNew-PSSession
のパラメーター値 コマンドレット。利用可能な認証オプションがいくつかあります。それらについては、MSDN(https://msdn.microsoft.com/en-us/library/aa384295(v=vs.85))で一般的なWinRM認証について詳しく読むことができます。 aspx
スクリプトの構文に誤りがあると信じる当面の理由はありませんが、上記が役に立たない場合はおそらくそれを見ることができます。