如何只打印 Get-ExecutionPolicy 中的 Scope 和 Policy 项?

How to print only the Scope and Policy items in Get-ExecutionPolicy?

这对于 Windows 大师来说应该是微不足道的,但对于 *nix 历史学家来说似乎相当令人生畏。

我只想打印ScopeExecutionPolicy中的值table,获取方式:

# Actual output:
(Get-ExecutionPolicy -List)

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine          Bypass


# Expected output:
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine          Bypass

这在 Bash 中非常简单,只需通过管道传输到 tail +4。根据其他帖子,PS 等价物应该是 | Select-Object -Last 5,但这不起作用。

如何在纯 PowerShell 中执行此操作?

我可以通过以下方式分别获得:

(Get-ExecutionPolicy -List).Scope
(Get-ExecutionPolicy -List).ExecutionPolicy

但是再拼起来就很难看了

Get-ExecutionPolicy -List | Format-Table -hideTableHeader

为了扩展 mhhollomon 的答案,PowerShell 具有基于隐藏在其文件夹中的 .xml 文件的对象的默认输出。对于 Get-ExecutionPolicy 输出的 Microsoft.PowerShell.ExecutionPolicy 对象,当没有明确指定其他格式时,它默认使用 Format-Table。由于这发生在管道的末端,您尝试的任何 Select-Object 命令都将在管道末端之前发生,因此您只是从到达管道末端移除 Microsoft.PowerShell.ExecutionPolicy 个对象。剩余的对象到达管道的末端,然后脚本引擎检查它们应该如何输出,并生成一个包含剩余对象的 table。