我已将csv中的计算机名称列表导入变量。
现在,我想测试列表中每个计算机名称上是否存在路径
期望的输出:
Computer Status
-------- ------
computer1 Online
computer2 Offline
下面会将答案注册为false。这是对3台机器的一个答案。当我测试$userscomputer
变量时,它确实包含computernames
的列表,其中一些是在线的。
看起来我需要针对变量中的每台机器运行,但到目前为止我还没有成功。谢谢你的阅读。
$name = "vader"
$usersComputer = import-csv .....etc.
$path = "\\$userscomputer\c$\users\$name"
$componline = test-path $path
$componline
csv文件有2列 主机名下的“主机名”“已记录用户”计算机名称和“已记录用户”下的广告名称 computer1 bicard computer2 bicard computer3 vader
理想情况下,ID就像显示哪个计算机在线,我的想法在下面
$usersComputer | ForEach-Object {
$cn = $_."Host Name"
$path = "\\$cn\c$\users\$name"
$state = Test-Path $path
write-host $cn, $state
}
它在下面输出,但是计算机3应该报告为真,并且未显示$ cn变量。
失败 失败 失败
我已经重新解决了你的解决方案,现在效果非常好。已完成CSV文件的导入,因此变量具有计算机名称。经过以下工作。
$usersComputer | ForEach-Object {
$cn = $_
$comp = Test-Path \\$cn\c$\users\$username
[PSCustomObject]@{
Computer = $cn
Status = if ($componline) { 'Online' } else { 'Offline' }
}
}
答案 0 :(得分:0)
$usersComputer
将包含一组对象,每个对象的属性名称都与CSV中的列相匹配。您尚未提供CSV的示例。因此,如果它有一个名为ComputerName
的列,您可能会执行以下操作:
$usersComputer | ForEach-Object {
$cn = $_.ComputerName
$path = "\\$cn\c$\users\$name"
$componline = Test-Path $path
[PSCustomObject]@{
Computer = $cn
Status = if ($componline) { 'Online' } else { 'Offline' }
}
}