2017-03-14 8 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 명령에 직접 문자열을 입력하면 원격 클라이언트에서 암호가 성공적으로 변경됩니다. 그러나 대신 $new_password 변수를 사용하면 원격 클라이언트의 관리자 암호가 공백으로 설정됩니다. 다른 모든 변수 (예 : $computer$mycred)는 전체 Invoke-Command 명령에서 제대로 작동하지만 작동하지 않는 것은 단지 하나의 $ 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”)