远程 PowerShell 目标上 ADSI 命令中的变量
Variables within ADSI command on remote PowerShell target
我正在使用通过 Invoke-Command
发送的 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
命令中都可以正常工作,但是只有 $new_password 一个不起作用。即使我执行以下操作:
$new_password = "mypassword"
Invoke-Command -ComputerName $computer -ScriptBlock {
(([ADSI]“WinNT://localhost/Administrator”).SetPassword($new_password)).SetInfo
} -Credential $mycred
将变量传递到脚本块应该是这样的:
$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”)
我正在使用通过 Invoke-Command
发送的 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
命令中都可以正常工作,但是只有 $new_password 一个不起作用。即使我执行以下操作:
$new_password = "mypassword"
Invoke-Command -ComputerName $computer -ScriptBlock {
(([ADSI]“WinNT://localhost/Administrator”).SetPassword($new_password)).SetInfo
} -Credential $mycred
将变量传递到脚本块应该是这样的:
$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”)