Войти

Показать полную графическую версию : [решено] Переименовать несколько ПК через csv


Jehn
22-01-2018, 15:25
Всем привет. Хочу переименовать компы таким скриптом из инета:
$CSVFile ="E:\PClist.csv"
$List = Import-Csv $CSVFile -Header OldName, NewName
Foreach ($Machine in $List) {Rename-Computer -ComputerName $Machine.OldName -NewName $Machine.NewName -DomainCredential domen\admin }

Выдает ошибку:
Rename-Computer : Не удается проверить аргумент для параметра "NewName". Аргумент пустой или имеет значение NULL. Укажи
те непустой аргумент, не имеющий значение NULL, после чего повторите выполнение команды.
E:\RenameDomainPC-PACK.ps1:3 знак:86
+ ... uter -ComputerName $Machine.OldName -NewName $Machine.NewName -Domain ...
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: ( [Rename-Computer], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.RenameComputerCommand


Для проверки запускал скрипт:
$CSVFile ="E:\PClist.csv"
$List = Import-Csv $CSVFile -Header OldName, NewName
Foreach ($Machine in $List) {Write-host $Machine.Oldname, $Machine.NewName}
Список из файла выводит нормально в виде komp1;komp2 и т.д.

Помогите, люди добрые, кто чем может.

Iska
22-01-2018, 15:44
Jehn, возможно, имеет смысл упаковать Ваш E:\PClist.csv в архив и приложить к сообщению.

Казбек
22-01-2018, 16:44
$cred = get-credential
$Computers = import-csv c:\temp\rename.csv
foreach ($Computer in $Computers){
Rename-Computer -NewName $Computer.NewName -ComputerName $Computer.Name -DomainCredential $cred -Restart
}

$a = Import-Csv ServerNames.csv -Header OldName, NewName
Foreach ( $Server in $a ) {Rename-Computer -ComputerName $Server.OldName -NewName $Server.NewName -DomainCredential Domain01\Admin01 -Force -Restart}

Jehn
23-01-2018, 07:14
Всем спасибо. Вы и ребята с ixbt натолкнули на мысль, что проблема в присвоении.
Эта сволочь присваивала к olname всю строку в виде komp1;komp2.
Заработало вот так:
$cred = get-credential
$CSVFile ="E:\PClist.csv"
$List = Import-Csv $CSVFile -Header OldName, NewName -Delimiter ";"
Foreach ($Machine in $List) {Rename-Computer -ComputerName $Machine.OldName -NewName $Machine.NewName -DomainCredential $cred}

Помогла еще вот эта штука $cred = get-credential, в то он на каждое переименование спрашивал логин\пароль.




© OSzone.net 2001-2012