2014-09-17 7 views
2

У меня есть файл .CSV, в который я заполняю некоторую информацию о AD. Предполагается, что следующий сценарий должен заполнить «Office» для определенных свойств AD пользователей. Заголовок в файле CSV с разными именами «Office» называется «офис».неожиданный токен 'if' в выражении или инструкции powershell

Другая информация:

Обмен 2013 Гибрид сервер

Форрест Functional Level = 2003 (Just понижены на прошлой неделе старый ДЦ)

Все DC в настоящее время 2012 R2. Мы ценим любые предложения.

Это использовалось для работы с командлетами QADuser, поэтому я просто нашел атрибуты cmdlet/parameter и изменил их.

Новый скрипт, который не работает:

Import-CSV d:\scripts\ExchangeExportQuery.csv | ForEach-Object {$myOff = $_.Office if ($_.DistinguishedName -ne $null -and ($_.DistinguishedName.StartsWith("CN="))) {Get-User -ResultSize 'unlimited' -identity $_.DistinguishedName | foreach-object { Set-User -identity $_.DistinguishedName -Office $myOff}}} 

Старый сценарий, который фактически работал на сервере старый обмен 2007 с QAD командлетов:

Import-CSV d:\scripts\ExchangeExportQuery.csv | ForEach-Object { 
$myOff = $_.Office 
if ($_.DN -ne $null -and ($_.DN.StartsWith("OU="))) { 
    Get-QADUser -SizeLimit 0 -SearchRoot $_.DN | 
     foreach-object { Set-QADUser -identity $_.DN -Office $myOff} 

Я могу быть далеко здесь и лучше начать с нуля, но любая помощь будет оценена по достоинству.

ответ

3

Проблема - синтаксис. Вам нужно либо сделать несколько строк, либо вставить точку с запятой для разделения команд после $myOff = $_.Office и до If (. Мое предложение следующее или облегчить его чтение:

Import-CSV d:\scripts\ExchangeExportQuery.csv | ForEach-Object { 
    $myOff = $_.Office 
    if ($_.DistinguishedName -ne $null -and ($_.DistinguishedName.StartsWith("CN="))) { 
     Get-User -ResultSize 'unlimited' -identity $_.DistinguishedName | foreach-object { 
      Set-User -identity $_.DistinguishedName -Office $myOff 
     } #End nested ForEach 
    } #End If 
} #End Outer ForEach