【发布时间】:2020-05-17 11:19:53
【问题描述】:
我们正在为需要重命名的特定 PC(大约 10,000 台)进行大量工作。他们处于工作组模式(未加入域)。显然,如果我们可以编写脚本并远程执行,我们应该这样做。我一直在努力更好地理解 PowerShell,并认为如果我能正确编写代码,它实际上可以很容易地完成。我需要一个非常简单的脚本:
- 获取机器的当前IP地址。
- 将该 IP 地址与 CSV 格式的列表进行比较。
- 从列表中,使用基于 IP 地址的新计算机名称并重命名计算机。
CSV 会非常简单:
IPADDRESS,NEWCOMPNAME
192.168.0.1,NewPC1
192.168.0.2,NEWPC2
192.168.0.3,NEWPC3
这是我到目前为止的脚本,但无法正常工作:
$currentIpAddress = Test-Connection $env:COMPUTERNAME -count 1 | select Address, Ipv4Address
$csv = Import-Csv C:\test.csv
$newComputerName = $csv | where {$_.IPADDRESS -eq $currentIpAddress} | % NEWCOMPNAME
Rename-Computer -newname $newComputerName -Force -Restart
【问题讨论】:
-
我认为您需要检查计算机是否已经具有正确的名称(因为它之前已重命名),并且您应该跟踪所有正常的计算机,这样您就知道您已完成重命名... ????
-
究竟是什么不工作?你得到什么错误?您如何在远程计算机上运行它以及使用什么凭据?
-
@Sceptalist 提出了所有正确的问题;另外,我想问一下您运行的是什么版本的 PowerShell 和 Windows,请注意Microsoft documentation for
Rename-Computer。