【发布时间】:2022-10-20 08:31:15
【问题描述】:
我当前的脚本检查某些客户端上的特定文件夹是否存在。 在检查文件夹是否存在之前,我想检查客户端是在线还是离线。 我当前的脚本如下所示:
$CDS = Get-content C:\Users\XY\Desktop\Clientliste.txt
Foreach($c in $CDS) {
IF (Test-Connection -BufferSize 32 -Count 1 -ComputerName $c -Quiet) {
Foreach ($c in $CDS) {
$Test = Test-Path -path "\\$c\c$\apps\perl"
Start-Sleep -s 0.25
If ($Test -eq $True) {
Write-Host "Path exists on $c."
}
Else {
Write-Host "Path NOT exist on $c."
}
}
}
Else {
Write-Host "The remote computer " $c " is Offline"
}
}
我不知道如何链接 foreach 循环以便它们一起工作。
因为当我现在运行我的脚本时,它会在第二个foreach 循环中的第一个if 请求之后进行,并且当它完成第二个foreach 循环时它确实会先离开它。
我不想要那个。我希望如果客户端在线,它会检查路径是否存在,然后转到下一个客户端并再次检查它是否在线,然后......
也许你可以帮助我:)
【问题讨论】:
-
在您的
if中添加break -
您不需要第二个 foreach,将其删除
-
老实说,您只需测试路径即可。仅仅因为您可以 ping 一台机器,并不意味着您可以连接到它。从我的角度来看,只需要一个循环。
标签: windows powershell