3

我的脚本应该在计算机列表 (txt) 中查找文件,如果文件存在则返回 true,否则返回 false。

问题是,即使文件确实存在,它也会返回“False”。

    $computers = Get-Content -Path C:\temp\SvcHosts\PSKILL_SvcHosts_Workstations.txt

foreach ($comp in $computers)
{
    Test-Path \\$comp\c$\Windows\myfolder\myapp.exe
}

当我Test-Path \\COMPUTERNAME\c$\Windows\myfolder\myapp.exe单独运行时,它应该返回 true。当我从 txt 列表运行时,不应该返回 false。

有任何想法吗?

4

2 回答 2

2

这听起来很奇怪,但我只是在另一台机器上运行了我的脚本(没有改变它),它按预期工作。我测试脚本的两台机器之间的主要区别在于 PowerShell ISE 的版本。

机器 1 ISE 版本:3.0 测试路径即使文件存在也返回 false

机器 2: ISE 版本:2.0 测试路径工作正常。

不确定这些版本在访问权限或其他方面是否存在差异。我的印象是它在机器 1 中返回 false,因为脚本无法到达计算机(无论如何我都是在管理员权限下运行它)。

我知道这没有多大意义……但无论如何,案件已结案。非常感谢所有帮助过的人。

于 2013-08-29T18:34:51.807 回答
0

使用格式化字符串填写值:

$Computers | ForEach-Object { 
    Test-Path ('\\{0}\c$\Windows\myfolder\myapp.exe' -f $_) 
}
于 2013-08-29T16:26:02.490 回答