你如何隐藏“你”这个词;GAC/版本/位置“;来自PowerShell脚本的标题?

你如何隐藏“你”这个词;GAC/版本/位置“;来自PowerShell脚本的标题?,powershell,Powershell,当我通过命令行执行PowerShell脚本(.ps1)时,它会在脚本前面加上几个标题,例如: powershell.exe -File "C:\path\to\powershell.ps1" GAC Version Location --- ------- --------

当我通过命令行执行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。

这可能是由于调用了
[System.Reflection.Assembly]::Load
/
加载文件
/
LoadFrom
/
LoadWithPartialName
方法。此方法返回它们已加载的
Assembly
对象。由于PowerShell从每个语句返回值,而不仅仅是显式的
return
语句,所以您需要显式地忽略
Assembly
对象,这样它就不会在控制台上打印出来。尽管如此,我建议您使用
Add Type
PowerShell cmdlet加载程序集:

Add-Type -AssemblyName System.Windows.Forms

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

  • 使用Out Null命令-我认为最流行的方法
  • 将输出重定向到$null——这也是一种非常明显的方法
  • 将值赋给$null-正常
  • 将结果施放到$void-这确实是一个技巧
下面您可以检查所有方法。我创建了一个函数,该函数加载5次汇编,并在上述每个方法上使用,但最后一个方法除外。如你所见,四条信息消失了


脚本中的某行正在输出具有这些属性的对象。这是默认情况下
写入输出
显示对象的方式。您需要确定脚本中的哪个命令输出该对象,并将其重定向或转换为字符串。请参阅以了解执行此操作的方法。
[System.Reflection.Assembly]::LoadWithPartialName
->
添加类型
@PetSerAl这正是我的问题。我将
[system.Reflection.Assembly]::LoadWithPartialName(“system.Windows.Forms”)
更改为
添加类型-AssemblyName system.Windows.Forms
,这就是我所需要的。我是PowerShell的新手,正在复制和粘贴我找到的东西,不知道这个API被弃用了。请将您的评论转化为答案,我将其标记为已接受。:)