ОК, давайте рассмотрим, что не так.
Переменные $ 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