Назад | Перейти на главную страницу

Новичок. ForEach, IF, Else

Пожалуйста, просветите меня. Я пытаюсь проверить, существует ли файл на рабочем столе группы компьютеров. Некоторые компьютеры работают под управлением Windows 7, а некоторые - под управлением Windows XP. Когда я запускаю код, он не проверяет путь на каждом компьютере и возвращает каждый компьютер как "имеющий URL", даже если я знаю, что файл не существует. Я не уверен, где я ошибся.

$a = Get-Content "C:\Computers.txt"
$windowsXP = "\\$i\c$\Documents and Settings\All Users\Desktop\file.url"
$windows7 = "\\$i\c$\Users\Public\Desktop\file.url" 

ForEach ($i in $a){
 #Test file on WindowsXP
if ((test-path $windowsXP) -eq $True)
    {Write-Output "$i WindowsXP has URL"}

elseif ((test-path $windowsXP) -eq $False)
    {Write-Output "$i WindowsXP needs URL"}

 #Test file on Windows7
elseif((test-path $windows7) -eq $True)
    {Write-Output "$I Windows7 has URL"}

elseif ((test-path $windows7) -eq $False)
   {Write-Output "$I Windows7 needs URL"}
}

Попробуйте это (непроверено). Хотя до сих пор не обойти вниманием тот факт, что вы тестируете вслепую.

$a = Get-Content "C:\Computers.txt"

ForEach ($i in $a){

$windowsXP = "\\$i\c$\Documents and Settings\All Users\Desktop\file.url"
$windows7 = "\\$i\c$\Users\Public\Desktop\file.url" 

 #Test file on WindowsXP
Write-Output("$i - Checking WindowsXP Location")
if ((test-path $windowsXP) -eq $True)
    {Write-Output "File Found"}

elseif ((test-path $windowsXP) -eq $False)
    {Write-Output "File Not Found "}

 #Test file on Windows7
Write-Output("$i - Checking Windows7 Location")
if((test-path $windows7) -eq $True)
    {Write-Output "File FoundL"}

elseif ((test-path $windows7) -eq $False)
   {Write-Output "File Not Found"}
}