如何隐藏PowerShell脚本中的“GAC /版本/位置”标题?

时间:2016-04-12 16:56:09

标签: powershell

当我通过命令行执行PowerShell脚本(.ps1)时,它在脚本前面加上几个标题,例如:

powershell.exe -File "C:\path\to\powershell.ps1"

GAC    Version        Location                                                                                         
---    -------        --------                                                                                         
True   v4.0.30319     C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089...

我不想隐藏PowerShell脚本的所有输出,因为它确实回显了一些有用的信息。我只想隐藏这些标题,这样它们就不会出现在我的屏幕上,也不会在脚本运行时与日志混在一起。

如果重要,我正在使用Windows 10中内置的任何PowerShell。

2 个答案:

答案 0 :(得分:1)

可能由于调用[System.Reflection.Assembly]::Load / LoadFile / LoadFrom / LoadWithPartialName方法而发生这种情况。此方法返回Assembly对象,它们有加载。由于PowerShell从每个语句返回值,而不仅仅是显式return语句,因此您需要显式忽略该Assembly对象,因此它不会在控制台上打印。虽然,我建议您使用Add-Type PowerShell cmdlet来加载程序集:

Add-Type -AssemblyName System.Windows.Forms

答案 1 :(得分:1)

要隐藏LoadFile方法的返回值,您有几个选项:

  • 使用 Out-Null 命令 - 我认为最流行的方法
  • 将输出重定向到 $ null - 这也是非常明显的方法
  • 将值分配给 $ null - 没关系
  • 将结果转换为 $ void - 这真的是诀窍

您可以在下面查看所有方法。我创建了一个函数,它加载5次装配并使用每个但最后的方法。你可以看到四个信息消失了。

Hiding Load file result in console