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时产生第二组?这两个结果似乎并不相关?而且...此信息存储在哪里?我的意思是,我怎么能自己找到这个?
谢谢。
答案 0 :(得分:3)
TheIncorrigible1已经给您的东西之外。
至此...
我的问题是:为什么get-eventlog -list产生第一组,而 为什么将其通过管道传递给get-member会产生第二个?他们俩 结果似乎无关
因为是第一个,所以您明确要求在系统上列出物理日志。当然,这是您可以进行的工作。
第二个是您要询问cmdlet的所有方法和属性。这是用来对那些日志执行操作的方法。 Get-Member允许我们获取有关cmdlet返回的对象的信息。
有关帮助文件和在线文档的全部内容。
这些不是同一件事,因此输出是不同的。
答案 1 :(得分:3)
PowerShell具有自己的输出格式系统,如Get-Help about_Format.ps1xml
它基于与.NET类型相关的格式设置规则,并按 视图类型分类:
表格,列表,宽幅,自定义。
默认规则适用于没有相关格式数据的类型。
向控制台输出 隐式 时,将使用格式数据中定义的默认视图类型。如果不存在,则具有最多 4 个属性的对象将显示在表格式中(隐式Format-Table
),超出了每个对象的多行列表使用显示(隐式Format-List
)。
或者,您可以使用Format-*
cmdlet 生成特定的输出格式:Format-Table
(表视图),Format-List
(列表视图),Format-Wide
(宽,单属性,多列视图),Format-Custom
(通常以JSON- like 格式显示对象内部结构的视图)。
要检查与给定类型关联的格式设置规则,请使用Get-FormatData
。
在当前情况下,Get-EventLog
输出类型为[System.Diagnostics.EventLog]
的对象,因此要检查其格式数据,请使用:
Get-FormatData System.Diagnostics.EventLog | Format-Custom -Depth 10
对输出的理解并不重要,但是所有格式信息都在那里。
存储格式信息的位置:
在 Windows PowerShell 中,可以在*.Format.ps1xml
的目录子树的$PSHOME
文件中找到PowerShell附带的格式化信息。
在PowerShell Core 中,PowerShell附带的格式信息被编译为可执行文件(pwsh
)。
第三方模块可以包含自己的*.Format.ps1xml
文件,以定义其输出类型的格式,这些文件通过模块manifest (*.psd1
)中的FormatsToProcess
条目在内部进行引用。