在函数中使用Set-ADUser

时间:2014-05-19 04:16:11

标签: function powershell

使用函数时,我在AD中设置属性值时遇到问题。当我在相同的条件下使用Set-ADUser而不使用函数时我没有遇到问题,它的效果很好。在函数中使用Set-ADUser时,我得到一个无效的参数错误。我需要使用一个函数,因为我正在比较很多数据值。很多数据将与功能需求进行比较。我很难过。

   
function compareandset($value_ad, $value_csv, $userid, $propdata) {
      $id = $userid.SamAccountName

      IF($value_ad -eq $value_csv) {
        Write-Host "The values were the same!"
      }
      ELSEIF($value_ad -ne $value_csv) {
           Write-Host "AD value changed"
           get-aduser -filter {SamAccountName -eq $userid} | Set-ADUser -$propdata $value_csv
      }
}

$userid = "jsmith"
$value_ad = "A city"
$value_csv = "Not a city"
$propdata = "Office"

compareandset $Office $office_csv_value $userid $propdata

1 个答案:

答案 0 :(得分:0)

完整的错误消息说什么?您可以尝试使用splatting和更改:

   
...
Write-Host "AD value changed"
get-aduser -filter {SamAccountName -eq $userid} | Set-ADUser -$propdata $value_csv
}
...

为:

...
Write-Host "AD value changed"
$params = @{$propdata=$value_csv}
get-aduser -filter {SamAccountName -eq $userid} | Set-ADUser @params
}
...

有关splatting的更多信息:http://technet.microsoft.com/en-us/library/jj672955.aspx