我使用 bat + Powershell 脚本重新启动域计算机。我不想使用域管理员,而是使用具有管理员权限的本地用户。
bat文件:
PowerShell -NoProfile -ExecutionPolicy Unrestricted -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Unrestricted -File ""d:\public\Reboot Computer\Reboot.ps1""' -Verb RunAs}";
Powershell 重启.ps1:
Restart-Computer -ComputerName (Read-Host "ComputerName") -Credential (Get-Credential) -Force
我以管理员身份运行 bat,然后输入计算机名称 comp002,作为凭据,我使用管理员组 comp002\admuser 中的本地用户,并且密码脚本已执行,但计算机未重新启动。
也许问题与 Windows 防火墙有关(允许 WMI)?
答案1
您可以使用 PsExec (https://docs.microsoft.com/en-us/sysinternals/downloads/psexec)
psexec \\comp002 -u comp002\admuser shutdown /r /t 0
答案2
bat文件:
PowerShell -NoProfile -ExecutionPolicy Unrestricted -Command "& {Start-Process PowerShell -ArgumentList'-NoProfile -ExecutionPolicy Unrestricted -File""d:\public\Reboot Computer\Reboot.ps1""'-Verb RunAs}";
我尝试了下面的方法,而不是在我的 bat 文件中使用上面的代码。我简单地使用下面的方法创建了一个 bat 文件,并使用该文件调用了“Reboot.ps1”。(使用您答案中的相同 PowerShell 脚本)文件bat
内容
PowerShell.exe -executionpolicy Unrestricted -file "%~dp0Reboot.ps1"
脚本内容ps
(Reboot.ps1)
Restart-Computer -ComputerName (Read-Host "ComputerName") -Credential (Get-Credential) -Force
bat 文件和 ps 脚本都必须位于同一目录中。它可以正常工作。没有修改 WMI 或防火墙设置。我可以使用远程凭据成功重新启动远程服务器。(如您所说,本地用户属于管理员组)
答案3
尝试运行 Invoke-command -computername (gc computer.txt) -scriptblok {Restrt-computer -Force} 这对我有用,您尝试的方法产生了 invalid_operation_exception 访问被拒绝。