【问题标题】:Suppress output from Import-PSSession抑制 Import-PSSession 的输出
【发布时间】:2012-06-22 16:06:02
【问题描述】:

在执行Import-PSSession 时如何避免所有不需要的控制台输出?我正在编写一个脚本来监控 Exchange 中的一些内容,它需要进入我们的监控系统并且只产生非常具体的输出,但是每当我导入我的 Exchange 会话时它都会产生

警告:某些导入的命令名称包含未经批准的动词 可能会使它们不易被发现。使用 Verbose 参数了解更多信息 详细信息或键入 Get-Verb 以查看已批准的动词列表。

我试过了:

$Session=(Import-PSSession(New-PSSession -ConfigurationName Microsoft.Exchange \
 -ConnectionUri http://CasServer/PowerShell/ -Authentication Kerberos           \
 -Credential $Cred -AllowClobber -WarningAction:SilentlyContinue) 

它仍然显示不需要的文本。我也试过-ErrorAction:SilentlyContinue;不工作。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    如果指定要使用的所有 cmdlet 不可行,您可以使用以下开关来抑制警告:

    -DisableNameChecking
    

    例子:

    Import-PSSession $session -DisableNameChecking
    

    【讨论】:

      【解决方案2】:

      您正在 Import-PSSession 上设置 -WarningAction。警告您闻起来像 Import-Module(Import-PSSession 在幕后调用)。

      您可以在脚本的整个生命周期内将 $WarningPreference 全局变量更改为 SilentlyContinue。这将使您收到的警告静音。

      【讨论】:

        【解决方案3】:

        我认为更好的解决方案是将Import-PSSession 的输出读入变量,例如:

        $output = Import-PSSession $session -AllowClobber
        

        然后你可以阅读$output,看看是不是警告、错误等

        但不要使用-WarningAction:SilentlyContinue-ErrorAction:SilentlyContinue,因为你永远看不到它是否正常

        【讨论】:

          【解决方案4】:

          您可以尝试通过管道连接到| out null

          【讨论】:

          • 只是添加 out-null 不起作用 - 起作用的是 + 显式导入我想要的命令: Import-PSSession $Session -CommandName Get-MailboxDatabase, Get-MailboxDatabaseCopyStatus
          • 好,您可以回答您的问题,对其他用户来说是一个很好的信息!
          【解决方案5】:

          另一种选择:

          Import-PSSession $session 3> $null
          

          【讨论】:

            猜你喜欢
            • 2019-02-21
            • 2016-03-07
            • 2014-07-09
            • 2012-03-09
            • 2011-10-28
            • 2013-11-19
            • 1970-01-01
            相关资源
            最近更新 更多