使用netdom命令我已成功更改某些系统上的主机名。
netdom renamecomputer OLDNAME / newname:NEWNAME / userd:Domain \ DomainID / passwordd:* / force
因为我需要更改数百个系统的名称。 所以我添加了一个excel / csv文件,它将分别有2列'oldName'和'NewName'。
我试图创建一个函数,它使用参数调用上面提到的命令行(来自excel / csv文件中的每一行)。
Powershell代码
function renameAndReboot([string]$computer, [string]$newname)
{
$comp = gwmi win32_computersystem -computer $computer
$os = gwmi win32_operatingsystem -computer $computer
$comp.Rename($newname)
$os.Reboot()
}
Import-Csv mylist.csv
foreach ($entry in $list)
{
renameAndReboot($entry.oldname,$entry.newname)
}
我需要在批处理脚本中具有相同的功能。
基本上我想知道如何在批处理文件中导入excel并执行每一行。
任何人都可以帮助我。
答案 0 :(得分:0)
您可以使用FOR
循环CSV文件的所有行,并用逗号分隔它们。
阅读HELP FOR
并尝试此操作
for /f "tokens=1,2 delims=," %%a in (mylist.csv) do (
echo netdom renamecomputer %%a /newname:%%b /force
)
答案 1 :(得分:0)
取自微软的MSDN。
示例#3
PS C:\> $a = Import-Csv ServerNames.csv -Header OldName, NewName
PS C:\> Foreach ( $Server in $a ) {Rename-Computer -ComputerName $Server.OldName -NewName $Server.NewName -DomainCredential Domain01\Admin01 -Force -Restart}