我有一个.CSV文件,我正在填写一些AD信息。以下脚本应该在给定用户AD属性上填写“Office”。具有不同“Office”名称的CSV文件中的标题称为“office”。
其他信息:
Exchange 2013 Hybrid Server
Forrest Functional Level = 2003(刚刚降级旧DC的上周)
所有DC现在都是2012 R2。任何建议将不胜感激。
这曾经用于QADuser cmdlet,因此我只是找到了cmdlet /参数等效项并对其进行了更改。
不起作用的新脚本:
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 cmdlet实际工作的旧脚本:
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}
我可能会离开这里,最好从头开始,但任何帮助都会受到赞赏。
答案 0 :(得分: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