2017-03-14 19 views
0

Invoke-Commandを送信するADSIコマンドを使用して、リモートPowerShellターゲットのパスワードを変更する作業を自動化しています。私は、リモートマシンにADSIコマンドを送信するには、次のPowerShellコマンドを使用しています:リモートPowerShellターゲットのADSIコマンド内の変数

Invoke-Command -ComputerName $computer -ScriptBlock { 
    (([ADSI]“WinNT://localhost/Administrator”).SetPassword($new_password)).SetInfo 
} -Credential $mycred 

すべてが$new_password変数を除いて動作します。 ADSIコマンド(SetPassword()メソッド内)で文字列を直接入力すると、パスワードはリモートクライアント上で正常に変更されます。しかし、代わりに$new_password変数を使用すると、リモートクライアントの管理者パスワードが空白に設定されます。他のすべての変数、つまり$computer$mycredは、Invoke-Commandコマンド全体で正しく動作するように見えますが、動作していないのは1つの$ new_passwordだけです。スクリプトブロックに

$new_password = "mypassword" 
Invoke-Command -ComputerName $computer -ScriptBlock { 
    (([ADSI]“WinNT://localhost/Administrator”).SetPassword($new_password)).SetInfo 
} -Credential $mycred 

答えて

1

通過変数は次のようにする必要があります:私は、次の手順を実行している場合でも

$new_password = "mypassword" 
Invoke-Command -ComputerName $computer -Credential $mycred -ScriptBlock {param($new_password) (([ADSI]“WinNT://localhost/Administrator,user”).SetPassword($new_password)).SetInfo } -argumentlist $new_password 

をし、ADSIがあるべき([ADSI]“WinNT://localhost/Administrator,user”)

関連する問題