【问题标题】:Powershell if formattingPowershell 如果格式化
【发布时间】:2014-03-23 05:03:43
【问题描述】:
我正在尝试运行以下脚本,但当我运行时,我得到了
表达式或语句中出现意外的令牌“-PrimaryUserAddress”
我该如何解决这个问题?
$users = Get-ADUser "joerod" -Properties *|Select-Object SamAccountName, msRTCSIP-PrimaryUserAddress
ForEach ($user in $users) {
if($user.msRTCSIP-PrimaryUserAddress -ne 0){
Write-Host "Removing $($user.samaccountname) from OCS"
}
}
【问题讨论】:
标签:
powershell
if-statement
foreach
【解决方案1】:
解析器正在命中 - 并将其解释为 Powershell 运算符。单引号属性,以便将其解释为文字字符串:
if($user.'msRTCSIP-PrimaryUserAddress' -ne 0)
【解决方案2】:
除了 mjolinor 的回答,您可以在选择属性时重命名属性。
例如,这应该可以工作(未经测试):
$users = Get-ADUser "joerod" -Properties *|Select-Object SamAccountName, @{Name="PrimaryUserAddress";Expression={$_."msRTCSIP-PrimaryUserAddress"}}
ForEach ($user in $users) {
if($user.PrimaryUserAddress -ne 0){
Write-Host "Removing $($user.samaccountname) from OCS"
}
}
注意:“名称”指定变量的新名称,而“表达式”指定要重命名的变量。