首页 > 解决方案 > 根据当前 IP 地址更改计算机名称并从 CSV 文件查找的 PowerShell 脚本

问题描述

对于需要重命名的特定 PC(大约 10,000 台),我们正在进行大量工作。他们处于工作组模式(未加入域)。显然,如果我们可以编写脚本并远程执行,我们应该这样做。我一直在努力更好地理解 PowerShell,并认为如果我能正确编写代码,它实际上可以很容易地完成。我需要一个非常简单的脚本,它将:

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 

标签: powershellcomputer-name

解决方案


感谢大家的意见和问题。我想到了。只是为了回答问题并为其他人发布正确的代码,在这里。我正在使用 Windows 8.1 x64 和 Windows 10 x64。Powershell 4 和 5。如果计算机名称不在列表中,则脚本将失败(这很好)并且什么也不做。此外,我们以本地管理员帐户运行它,因此到目前为止测试已证明是成功的。

更新的脚本是:

我们使用的 CMD: If Not Exist C:\Temp MD C:\Temp Copy /Y "%~dp0RenameComputerBasedOnIPList.csv" C:\temp\RenameComputerBasedOnIPList.csv powershell -ExecutionPolicy ByPass -File "%~dp0RenameComputerBasedOnIPList.ps1"

正在运行的 PowerShell 脚本: Set-ExecutionPolicy -ExecutionPolicy Unrestricted $currentIpAddress = Test-Connection $env:COMPUTERNAME -count 1 | 选择地址,Ipv4Address $csv = Import-Csv C:\Temp\RenameComputerBasedOnIPList.csv $newComputerName = $csv | 其中 {$_.IPADDRESS -eq $currentIpAddress.IPV4Address} | % NEWCOMPNAME 写入主机 $currentIpAddress 写入主机 $csv 写入主机 $newComputerName 重命名计算机 -NewName $newComputerName -Force -Restart

格式化列表就像这样命名为 RenameComputerBasedOnIPList.csv。IPADDRESS,NEWCOMPNAME 10.96.21.121,BADCOMPNAME 10.96.21.158,WIN10NAMECHANGE 192.168.0.2,BADCOMPNAME1 10.96.21.52,WIN81NAMECHANGE

再次感谢。


推荐阅读