Создать переменные из файла CSV - PullRequest
0 голосов
/ 09 октября 2018

Мой список компьютеров представляет собой файл CSV с 3 столбцами (Machinename, New_AU и New_State).

Я пытаюсь переместить каждую машину из списка моих компьютеров в ее TargetOU.TargetOU для каждой машины основан на New_AU и New_State.Я не уверен, как получить эту информацию из файла CSV.Вот что у меня так далеко.Я ценю любую помощь в этом вопросе.

Import-Module ActiveDirectory

$ComputerList = Import-Csv -Path "C:\Temp\Scripts\AUchange\Computerlist.csv"
$TargetOU = "OU=$New_AU,OU=$New_State,OU=ST,OU=EN,DC=en,DC=wb,DC=bk,DC=cp"

foreach ($Computer in $ComputerList) {
    Get-ADComputer $Computer | 
        Move-ADObject -Server AD-server.en.wb.bk.cp -TargetPath $TargetOU
}

1 Ответ

0 голосов
/ 09 октября 2018

ОК, давайте рассмотрим, что не так.

Переменные $ New_AU и $ New_State не определены в скрипте, поэтому сейчас Null .

$ComputerList = Import-Csv -Path C:\Temp\Scripts\AUchange\Computerlist.csv
$TargetOU   =  "OU=$New_AU,OU=$New_State,OU=ST,OU=EN,DC=en,DC=wb,DC=bk,DC=cp"

Решение: Я исхожу из того, что вы сказали, что ваш $ ComputerList должен быть массивом объектов, которые содержат многозначные объекты со свойствами New_AU, New_State и MachineName

IfВ этом случае вы можете использовать:

Import-Module ActiveDirectory

Import-Csv -Path C:\Temp\Scripts\AUchange\Computerlist.csv | %{
    $TargetOU = "OU=$($_.New_AU),OU=$($_.New_State),OU=ST,OU=EN,DC=en,DC=wb,DC=bk,DC=cp"
    Get-ADComputer $_.Machinename | Move-ADObject -Server AD-server.en.wb.bk.cp -TargetPath $TargetOU
}

Что происходит

В PowerShell | означает Pipe.Это отправит данные из предыдущей команды следующей в конвейере | , и переменная для этих данных будет $ _

Итак, мы импортируем CSVкоторый превращает файл в объект Powershell.Затем мы передаем | этого объекта в % {} , что является сокращением для ForEach-Object

Мы устанавливаем $ TargetOU со строкой, используя $ () , что означает выражение (Это означает, что этот раздел запускается как скрипт, а не как строка. Затем мы вызываем данные объекта, переданные из Import-CSV , используя $_ и затем вызовите каждое необходимое свойство $ _. PropertyName .

Затем мы Get-AdComputer , используя переданный по каналу | data $ _ со свойством MachineName , который мы получили от Import-csv . Мы передаем этому Get-AdComputer Object значение Move-ADObject , где мы устанавливаем -TargetPath для параметра $ TargetOU

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...