【问题标题】:Please explain this Powershell output for get-eventlog - default output formatting请解释 get-eventlog 的 Powershell 输出 - 默认输出格式
【发布时间】:2018-08-10 21:17:16
【问题描述】:
get-eventlog -list

产生这个:

 Max(K) Retain OverflowAction        Entries Log                                                                      
 ------ ------ --------------        ------- ---                                                                      
 20,480      0 OverwriteAsNeeded      14,418 Application                                                              
 20,480      0 OverwriteAsNeeded           0 HardwareEvents                                                           
    512      7 OverwriteOlder              0 Internet Explorer                                                        
 20,480      0 OverwriteAsNeeded           8 Key Management Service                                                   
    128      0 OverwriteAsNeeded          36 OAlerts                                                                  
                                          Security                                                                 
 20,480      0 OverwriteAsNeeded       8,771 System                                                                   
    512      7 OverwriteOlder              0 Windows Azure                                                            
 15,360      0 OverwriteAsNeeded          53 Windows PowerShell                                                       

还有……

get-eventlog -list | get-member

结果(为简洁起见):

TypeName: System.Diagnostics.EventLog

Name                      MemberType Definition                                                                        
----                      ---------- ----------                                                                        
Disposed                  Event      System.EventHandler       
Disposed(System.Object, System.EventArgs)                     
EntryWritten              Event      
System.Diagnostics.EntryWrittenEventHandler EntryWritten(System.Object, System....
BeginInit                 Method     void BeginInit(), void 
ISupportInitialize.BeginInit()                             
Clear                     Method     void Clear()                                                                      
Close                     Method     void Close()                                                                      
CreateObjRef              Method     System.Runtime.Remoting.ObjRef 
CreateObjRef(type requestedType)         

我的问题是:为什么 get-eventlog -list 会产生第一组,为什么当它通过管道输入 get-member 时会产生第二组?这两个结果似乎没有关系?而且...这些信息存储在哪里?我的意思是,我自己怎么能找到这个?

谢谢。

【问题讨论】:

  • 它在类型 ps1xml 模块文件中,控制信息如何显示到控制台。
  • 如果您的问题尚未得到完全解答,请考虑 accepting 提供答案或提供反馈。

标签: powershell formatting


【解决方案1】:

除了 TheIncorrigible1 已经给你的东西。

至于这个……

我的问题是:为什么 get-eventlog -list 产生第一组和 为什么当它通过管道传输到 get-member 时会产生第二个?他们俩 结果似乎不相关

因为这是第一个,所以您明确要求列出系统上的物理日志。这当然是你可以做的。

第二个是您要求 cmdlet 的所有方法和属性。这是您用来对这些日志执行操作的内容。 Get-Member 允许我们获取有关 cmdlet 返回的对象的信息。

关于帮助文件和在线的完整文档。

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-member?view=powershell-6

这些不是一回事,因此输出不同。

【讨论】:

    【解决方案2】:

    PowerShell 有自己的用于显示的输出格式系统,如Formatting File OverviewGet-Help about_Format.ps1xml 中所述

    它基于将格式化规则与 .NET 类型关联,按视图类型分类:
    表格、列表、宽、自定义。

    默认规则适用于没有关联格式数据的类型。

    • 隐式输出到控制台,使用格式化数据中定义的默认视图类型;在它不存在的情况下,具有最多 4 个属性的对象会导致 表格 显示(隐式 Format-Table),除此之外,每个对象的多行列表 使用显示(隐式Format-List)。

    • 或者,您可以使用Format-* cmdlet 生成特定的输出格式:Format-Table(表格视图)、Format-List(列表视图)、Format-Wide(宽、单-property,多列视图),Format-Custom(一般以 JSON-like 格式显示对象内部结构的视图)。

    要检查与给定类型关联的格式规则,请使用Get-FormatData

    在本例中,Get-EventLog 输出类型为 [System.Diagnostics.EventLog] 的对象,因此要检查其格式数据,请使用:

    Get-FormatData System.Diagnostics.EventLog | Format-Custom -Depth 10
    

    理解输出并不重要,但所有格式信息都在那里。

    格式信息的位置

    • Windows PowerShell 中,可以在 的目录子树中的 *.Format.ps1xml 文件 中找到 PowerShell 附带的格式信息$PSHOME。要将它们全部列出,请运行:

      Get-ChildItem $PSHOME -Filter *.Format.ps1xml -Recurse
      
    • PowerShell (Core) v6+ 中,PowerShell 附带的格式信息编译成可执行文件 (pwsh )

    • 第三方模块可能包含自己的 *.Format.ps1xml 文件,以定义它们输出的类型的格式,模块内部通过模块的 manifest (*.psd1) 中的 FormatsToProcess 条目引用。 p>

    【讨论】:

      猜你喜欢
      • 2017-03-12
      • 2017-08-06
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多