【问题标题】:Setting Variable Before Out-Null While Suppressing Output PowerShell在抑制输出 PowerShell 时在 Out-Null 之前设置变量
【发布时间】:2020-10-21 16:48:50
【问题描述】:

我试图在设置变量时抑制命令的输出。我需要这样做,因为我已经使用PS2EXE-GUI 编译了 PowerShell 脚本。这个程序在一个单独的窗口中显示所有命令输出,这很烦人而且没有必要。我正在尝试使用Get-ChildItem "$MYSQLFOLDERLOCATION" | Out-String | Write-Host,但这仅在目录中没有任何其他内容时才有效,并且它会在屏幕上显示目录内容。我也一直在尝试使用Get-ChildItem "$MYSQLFOLDERLOCATION" | $ISMYSQLFOLDERPRESENT = $? | Out-Null,但这在语法上是不正确的。我可以使用类似的东西吗?我基本上想在 PowerShell 中执行一个 ls 等效命令,然后存储它是否成功,而不在屏幕上显示任何内容(我不能使用 Write-Output , Write-Host 等)

【问题讨论】:

  • 听起来你在找$IsMySqlFolderPresent = Test-Path $MYSQLFOLDERLOCATION -PathType Container
  • 没错!我是 PowerShell 新手,从来不知道它存在 :) 如果你想把它变成答案,我会接受。
  • 同意,Get-Childitem 在这里是错误的命令。使用 Write-Host 会加剧问题,因为无论您做什么,它都会始终输出到控制台。测试路径是一种方式。
  • 我来自非 Windows 环境(Linux 类型),我一直使用 ls,设置变量,clear :)跨度>

标签: powershell


【解决方案1】:

您需要将整个表达式分配给一个变量 - 否则任何结果输出都会“冒泡”给调用者,您会在屏幕上看到它:

$variable = Get-ChildItem .\path

为了检查文件系统中是否存在文件夹,我建议使用Test-Path而不是Get-ChildItem

$IsMySqlFolderPresent = Test-Path $MYSQLFOLDERLOCATION -PathType Container

$IsMySqlFolderPresent 现在将保存一个布尔值($true$false),具体取决于 $MYSQLFOLDERLOCATION 指定的路径中是否存在目录

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 2016-06-18
    • 2022-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多