Как правильно выполнить, если еще правильно? - PullRequest
0 голосов
/ 04 мая 2020

Я сталкиваюсь с проблемой после успешного выполнения преобразования в Если ... все равно go в другое ... любой лучший способ решить?

if((Get-ChildItem -Recurse -path "D:\Temp" "Folder A") -eq $null)

{
    checkProfileThenConvert # Here I perform the conversion and now D:\Temp\Folder A exists
}
else
{
    Remove-Item "D:\Temp\Folder A" -Recurse -Force -Confirm:$false
    checkProfileThenConvert

}

1 Ответ

1 голос
/ 04 мая 2020

Поскольку у меня нет доступа к вашей файловой системе, я не могу проверить, есть ли где-нибудь (скрытый) Folder A вниз по дереву папок D:\Temp ...

Тем не менее, распространенная ошибка Сравнение с $Null на самом деле описано в примечании Об операторах сравнения :

Если вам нужно сравнить значение с $null Вы должны поставить $null в левой части сравнения. Когда вы сравниваете $null с Object[], результатом является False, поскольку объект сравнения является массивом. Когда вы сравниваете массив с $null, сравнение отфильтровывает любые значения $null, хранящиеся в массиве. Например:

PS> $null -ne $null, "hello"
True
PS> $null, "hello" -ne $null
hello

В вашем случае правильный синтаксис должен быть как минимум:

if($null -eq (Get-ChildItem -Recurse -path "D:\Temp" "Folder A"))

{
    checkProfileThenConvert  \\Here I perform the convertion and now D:\Temp\Folder A exists
}
else
{
    Remove-Item "D:\Temp\Folder A" -Recurse -Force -Confirm:$false
    checkProfileThenConvert

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...