在PowerShell中出现"if"表达式或语句中的意外标记。

3

我有一个CSV文件,用来填写一些AD信息。以下脚本应该会在指定用户的AD属性中填写“办公室”。CSV文件中包含不同“办公室”名称的标题名为“office”。

其他信息:

Exchange 2013 混合服务器

林功能级别 = 2003(上周刚刚降级旧的DC)

所有DC现在都是2012 R2。欢迎提供任何建议。

这曾经可以使用QADuser cmdlets工作,所以我只需找到相应的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}}}

旧的脚本实际上在旧的Exchange 2007服务器上使用QAD cmdlets有效:

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}

我可能完全偏离了方向,最好从头开始,但是任何帮助都将不胜感激。

1个回答

4
问题出在语法上。你需要将其分成多行,或在$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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接