powershell - 使用 PowerShell 和 [ADSI] 远程设置 Windows 本地管理员密码
问题描述
这么近,但这么远……
我正在尝试使用 [ADSI] 和 PowerShell 更改 Windows 服务器上的本地管理员密码,但在调用时找不到传递字符串变量的方法并出现以下错误:
Exception calling "Invoke" with "2" argument(s): "Number of parameters specified does not match the expected number."
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation
+ PSComputerName : vmdeploytest1
这适用于语句中的字符串:
$vmName = "vmdeploytest1"
Invoke-Command -ComputerName $vmName -Credential $creds -ScriptBlock {
$account = [ADSI]("WinNT://localhost/Administrator,user")
$account.psbase.invoke("setpassword","Password123")
}
这不会:
$vmName = "vmdeploytest1"
$password = '"Password123"'
$invoke = '"setpassword",'
$invokeStr = $invoke + $password
Invoke-Command -ComputerName $vmName -Credential $creds -ScriptBlock {
$account = [ADSI]("WinNT://localhost/Administrator,user")
$account.psbase.invoke($invokeStr)
}
这不
$vmName = "vmdeploytest1"
$password = '"Password123"'
Invoke-Command -ComputerName $vmName -Credential $creds -ScriptBlock {
$account = [ADSI]("WinNT://localhost/Administrator,user")
$account.psbase.invoke("setpassword",$password)
}
这不会:
$vmName = "vmdeploytest1"
$password = 'Password123'
Invoke-Command -ComputerName $vmName -Credential $creds -ScriptBlock {
$account = [ADSI]("WinNT://localhost/Administrator,user")
$account.psbase.invoke("setpassword",$password)
}
都给出相同的错误。我需要能够使用变量,因为我要生成一个随机密码。
解决方案
Jeroen Mostert 是正确的
当您将变量传递到 ScriptBlock 时,您需要在它们前面加上$using:
例如:
$vmName = "vmdeploytest1"
$password = 'Password123'
Invoke-Command -ComputerName $vmName -Credential $creds -ScriptBlock {
$account = [ADSI]("WinNT://localhost/Administrator,user")
$account.psbase.invoke("setpassword",$using:password)
}
推荐阅读
- login - 无法再创建允许登录的本地用户帐户
- performance - 自 iOS 12 以来,其他人的 Scenekit 应用程序是否变慢并开始卡顿?
- jquery - 如何只勾选一个复选框
- python - Django REST Framework Web 登录不起作用
- python - python将ode与固定时间步长集成
- resttemplate - 使用 PowerMockito 模拟 postForObject 会引发错误
- mysql - 如何选择列值作为列名但我不知道字段值 MYSQL
- php - 将帖子 ID 传递给 Twig/Timber 函数
- sql - SQL - 如果所有记录都具有特定值,如何仅从子查询中检索记录
- javascript - 在Javascript中将对象的一部分从数字键转换为数组