#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