具有阵列变量的Powershell AD-GetComputer

时间:2019-06-10 22:29:46

标签: powershell variables foreach active-directory

我正在尝试创建一个循环,以测试与Active Directory中特定计算机的连接。当我寻找KY-WH-DT01时,输出为@ {name = KY-WH-DT01}。我不确定自己在做什么错。

作为一种解决方法,我手动提取了列表,并将其作为硬代码正确地插入了变量中。

function testConnection {

$computers = Get-ADComputer -filter 'Name -like "KY-WH*" -or name -like "KY-SR"' | select name

$pass = 0
$fail = 0
foreach ($computer in $computers) {

        $testConnection = Test-Path "\\$computer\C$" -ErrorAction Stop
        if ($testConnection -eq $true) {
        Write-Host $computer -ForegroundColor Green
        $pass = $pass + 1
        }
        else {
        Write-Host $computer -ForegroundColor Red -BackgroundColor Black
        $fail = $fail + 1
        }
}
Write-Host $null
Write-Host "Passed: $pass  |  Failed: $fail"
}
testConnection

...

此代码应输出带有颜色的计算机名称列表,通过将它们变成红色或绿色来确定连接测试是通过还是失败。

1 个答案:

答案 0 :(得分:1)

您需要对变量进行深入研究。

foreach ($computer in $computers.Name) {

如果您只需要名称或计算机,而不需要其他变量,则可以这样做。

您还可以更改初始搜索以包括-ExpandProperty开关,而无需深入研究该属性。

$computers = Get-ADComputer -filter 'Name -like "KY-WH*" -or name -like "KY-SR"' | select -ExpandProperty name