重命名多台计算机

时间:2015-07-08 05:58:06

标签: excel function csv batch-file batch-rename

使用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并执行每一行。

任何人都可以帮助我。

2 个答案:

答案 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。

https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/rename-computer

示例#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}