我正在尝试运行脚本以通过 PowerShell 重命名远程计算机。我遇到的问题是出现以下错误:
Rename-Computer : Cannot establish the WMI connection to the computer 'computername' with the following error
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
At C:\temp\scripts\rename_script\new_rename.ps1:8 char:5
+ Rename-Computer -NewName $Computer.newname -ComputerName $compute ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (WLA-WS174931:String) [Rename-Computer], InvalidOperationExce
+ FullyQualifiedErrorId : RenameComputerException,Microsoft.PowerShell.Commands.RenameComputerCommand
我正在使用域管理员凭据从管理 PowerShell 窗口运行该命令。我能够在远程计算机上成功运行 Get-WMIobject。WMI 存储库是一致的。我已重新启动 WMI 服务。我可以在本地计算机上运行该命令,没有任何错误,但尝试通过网络运行它会导致访问被拒绝,无论我编写脚本还是手动执行。目标系统和源系统的操作系统都是 Windows 7。
我使用的命令是:
$cred = get-credential
rename-computer -newname newname -computername oldname -domaincredential $cred -restart -passthru -force
我是 PowerShell/WMI 新手,但我觉得我在这里已经很好地涵盖了基础知识。我还缺少什么?
答案1
您需要一组凭证来执行域环境中的更改。
Rename-Computer -ComputerName "Srv01" -NewName "Server001" -LocalCredential Srv01\Admin01 -DomainCredential Domain01\Admin01 -Force -PassThru -Restart
此命令将 Srv01 计算机重命名为 Server001,然后重新启动计算机以使更改生效。它使用 LocalCredential 参数提供有权连接到本地计算机的用户的凭据,使用 DomainCredential 参数提供有权重命名域中计算机的用户的凭据。它使用 Force 参数来取消确认提示,使用 PassThru 参数返回命令的结果。