我正在使用PowerShell 5.1迭代active directory中的计算机列表,我正在努力解决一些应该很简单的问题。
在下面的代码中,我将在foreach循环中为每台计算机选择名称和描述。我应该如何在循环中单独引用名称和描述?
$OU=@('OU=...')
$computers = $OU | foreach {Get-ADComputer -filter {
Name -notlike 'xxx*'
-and Name -notlike 'yyy*'
} -searchbase $_ -Properties description | Select name, description }
foreach ($computer in $computers) {
$computerName = $computer | select -ExpandProperty name
$computerDescription = $computer | select -ExpandProperty description
Write-Host "Host: $computerName [$computerDescription]"
}
我能够使用select -ExpandProperty
使其工作,但这似乎不必要地复杂。$computer变量包含如下键/值对:
@{name=ABCDE12345; description=Kiosk PC [Domain Separated]}
我尝试使用点符号$computer.name $computer.description
,但点被忽略并被视为文本。
我试过在谷歌上搜索这个,但我是PowerShell的新手,不知道如何表达我的问题!
我尝试使用点表示法
$computer.name $computer.description
,但点被忽略并被视为文本。
字符串扩展仅适用于简单变量引用。如果要取消引用字符串表达式中的属性,则需要子表达式运算符$()
:
"Host: $($computer.name) [$($computer.description)]"
PowerShell现在将在解析字符串值时单独评估子表达式