我的脚本应该在计算机列表(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。
有什么想法吗?
答案 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 $_)
}