Сценарий PowerShell, который изменяет имя компьютера на основе текущего IP-адреса и поиска из файла CSV - PullRequest
0 голосов
/ 31 января 2020

Мы прилагаем большие усилия для определения c компьютеров (приблизительно 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 

1 Ответ

0 голосов
/ 01 февраля 2020

Спасибо всем за ваши комментарии и вопросы. Я понял. Просто чтобы ответить на вопросы и опубликовать правильный код для других, здесь идет. Я бью Windows 8,1 x64 и Windows 10 x64. Powershell 4 и 5. Если имя компьютера отсутствует в списке, сценарий завершается ошибкой (что хорошо) и ничего не делает. Кроме того, мы используем эту учетную запись как локальную учетную запись администратора, поэтому до сих пор тесты оказались успешными.

Обновлены следующие сценарии:

CMD, который мы используем: Если не существует C : \ Temp MD C: \ Temp Copy / Y "% ~ dp0RenameComputerBasedOnIPList.csv" C: \ temp \ RenameComputerBasedOnIPList.csv powershell -ExecutionPolicy ByPass -File "% ~ dp0RenameComputerBasedOnIP6ist 100" 1001ps 1005ps Работающий скрипт PowerShell: Set-ExecutionPolicy -ExecutionPolicy Неограниченный $ currentIpAddress = Test-Connection $ env: COMPUTERNAME -count 1 | выберите адрес, Ipv4Address $ csv = Import-Csv C: \ Temp \ RenameComputerBasedOnIPList.csv $ newComputerName = $ csv | где {$ _. IPADDRESS -eq $ currentIpAddress.IPV4Address} | % NEWCOMPNAME Write-Host $ currentIpAddress Write-Host $ csv Write-Host $ newComputerName Rename-Computer -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

Еще раз спасибо.

...