【发布时间】:2016-08-15 11:21:49
【问题描述】:
我正在尝试创建一个可以更新给定属性的函数,其中属性的名称被传递到函数中,如下所示:
function Set-UserProperty {
param (
[String]$Property,
[String]$NewValue
)
Get-ADUser Testy.McGee -Properties $Property
Set-ADUser Testy.McGee -$Property $NewValue
# Set-ADUser Testy.McGee -Description $NewValue # <<<<< THIS WORKS
}
Set-UserProperty -Property "Description" -NewValue "New Description"
我可以很好地检索用户,但是当我尝试设置新的Description 时,我得到了这个错误:
Set-ADUser : 找不到接受参数的位置参数 '-描述'。
我也尝试调用Set-ADUser Testy.McGee $Property $NewValue,但这只会导致:
Set-ADUser : 找不到接受参数的位置参数 '描述'。
从第一个错误来看,PowerShell 似乎正在尝试执行:
Set-ADUser "Testy.Mcgee" -Description "New Description",因为它抱怨 '-Description' 参数。
但是,当我调用该行 (Set-ADUser "Testy.Mcgee" -Description "New Description") 时,用户会在 AD 中更新。
我是否认为因为我将参数作为[string] 传递,所以我不能再将其用作参数名称?如果是这样,是否有其他方法可以实现这一点(通过函数传递参数名称)?
【问题讨论】:
标签: powershell active-directory parameter-passing