【问题标题】:Variables within ADSI command on remote PowerShell target [duplicate]远程 PowerShell 目标上的 ADSI 命令中的变量 [重复]
【发布时间】:2017-03-14 02:48:19
【问题描述】:

我正在使用通过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

【问题讨论】:

    标签: powershell adsi


    【解决方案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”)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多