我正在尝试创建一个循环,以测试与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
...
此代码应输出带有颜色的计算机名称列表,通过将它们变成红色或绿色来确定连接测试是通过还是失败。
答案 0 :(得分:1)
您需要对变量进行深入研究。
foreach ($computer in $computers.Name) {
如果您只需要名称或计算机,而不需要其他变量,则可以这样做。
您还可以更改初始搜索以包括-ExpandProperty
开关,而无需深入研究该属性。
$computers = Get-ADComputer -filter 'Name -like "KY-WH*" -or name -like "KY-SR"' | select -ExpandProperty name