Установка переменной перед Out-null при подавлении вывода PowerShell

#powershell

#powershell

Вопрос:

Я пытаюсь подавить вывод команды при установке переменной. Мне нужно это сделать, потому что я скомпилировал сценарий PowerShell с использованием PS2EXE-GUI. Эта программа показывает весь вывод команды в отдельном окне, что очень раздражает и не является необходимым. Я пытаюсь использовать Get-ChildItem "$MYSQLFOLDERLOCATION" | Out-String | Write-Host , но это работает только тогда, когда в каталоге ничего нет, ничего другого, и на экране отображается содержимое каталога. Я также пытался использовать Get-ChildItem "$MYSQLFOLDERLOCATION" | $ISMYSQLFOLDERPRESENT = $? | Out-Null , но это синтаксически неверно. Есть ли что-то похожее на это, что я могу использовать? По сути, я хочу выполнить команду, эквивалентную ls, в PowerShell, а затем сохранить, удалось ли это или нет, ничего не показывая на экране (я не могу использовать Write-Output, Write-Host и т. Д.)

Комментарии:

1. Звучит так, как будто вы ищете $IsMySqlFolderPresent = Test-Path $MYSQLFOLDERLOCATION -PathType Container ?

2. Точно! Я новичок в PowerShell и никогда не знал, что это существует 🙂 Если вы хотите превратить это в ответ, я приму его.

3. Согласен, Get-Childitem здесь неправильная команда. И использование Write-Host усугубляет проблему, поскольку она всегда будет выводиться на консоль, что бы вы ни делали. Тестовый путь — это путь.

4. Я пришел из среды, отличной от Windows (типа Linux), и я всегда использовал ls , установить переменную, очистить 🙂

Ответ №1:

Вам необходимо присвоить переменной все выражение целиком — в противном случае любой результирующий вывод будет «всплывать» вызывающему, и вы увидите его на экране:

 $variable = Get-ChildItem .path
  

Для проверки, существует ли папка в файловой системе или нет, я бы предложил использовать Test-Path вместо Get-ChildItem :

 $IsMySqlFolderPresent = Test-Path $MYSQLFOLDERLOCATION -PathType Container
  

$IsMySqlFolderPresent теперь будет содержать логическое значение ( $true или $false ) в зависимости от того, существует ли каталог по пути, указанному $MYSQLFOLDERLOCATION