Выходные данные Powershell Test-Path -eq "False" не работают - PullRequest
0 голосов
/ 16 мая 2018

Итак, я пытаюсь проверить, доступен ли путь. Я делаю это с помощью Test-Path

Это выглядит так:

$c="C:\"
$d="D:\"
$e="E:\"

if(Test-Path $c -eq "False"){
}
elseif(Test-Path $d -eq "False"){
}
elseif(Test-Path $e -eq "False"){
}
else{
"The File doesn't exist"
}

Так что же я делаю не так, если ошибка выглядит следующим образом:

Test-Path : A parameter cannot be found that matches parameter name 'eq'.
At C:\Users\boriv\Desktop\ps\Unbenannt1.ps1:23 char:17
+ If(Test-Path $c -eq "False"){
+                 ~~~
+ CategoryInfo          : InvalidArgument: (:) [Test-Path], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.TestPathCommand`

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Вы не хотите сравнивать результат командлета Test-Path, поэтому вам нужно использовать круглые скобки, в противном случае параметр -eq передается командлету Test-Path, что и является причиной возникновения ошибки.

Я бы использовал оператор -not, так как я нашел его более читабельным. Пример:

if(-not (Test-Path $c)) {
}
0 голосов
/ 16 мая 2018

Другой вариант, вместо использования if/elseif/else, - поместить пути в массив и проходить по нему, пока не найдете правильный путь.

Таким образом, код остается неизменным для любого количества путей.

$paths = "C:\","D:\","E:\"

foreach ($path in $paths) {
    if(Test-Path $path){
        $validpath = $path
        break
    }
}

if ($validpath){
    "File exists here: $validpath"
}
else {
    "The File doesn't exist in any path"
}
0 голосов
/ 16 мая 2018

Оберните ваши Test-Path $c в скобки, чтобы они оценивались первыми:

$c="C:\"
$d="D:\"
$e="E:\"

if((Test-Path $c) -eq "False"){
    Write-Output '$c is false'
}
elseif((Test-Path $d) -eq "False"){
    Write-Output '$d is false'
}
elseif((Test-Path $e) -eq "False"){
    Write-Output '$e is false'
}
else{
    "The File doesn't exist"
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...