Powershell Test-Path返回false,但文件存在

时间:2013-08-29 13:28:01

标签: powershell

我的脚本应该在计算机列表(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。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

机器1 ISE版本:3.0 即使文件存在,Test-Path也会返回false

机器2: ISE版本:2.0 Test-Path工作正常。

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

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

答案 1 :(得分:0)

使用格式字符串填写值:

$Computers | ForEach-Object { 
    Test-Path ('\\{0}\c$\Windows\myfolder\myapp.exe' -f $_) 
}