Get-TypeData

获取当前会话中的扩展类型数据。

语法

Get-TypeData
   [[-TypeName] <String[]>]
   [<CommonParameters>]

说明

Get-TypeData cmdlet 将获取当前会话中的扩展类型数据。 这包括由 Types.ps1xml 文件添加到该会话的类型数据以及通过使用 Update-TypeData cmdlet 的参数添加的动态类型数据。

你可以使用 Get-TypeData 返回的扩展类型数据来检查会话中的类型数据,并将其发送到 Update-TypeDataRemove-TypeData cmdlet。

扩展类型数据将属性和方法添加到 PowerShell 中的对象。 可采用与使用对象类型中所定义的属性和方法相同的方式来使用已添加的属性和方法。 但是,在编写脚本时,应注意添加的属性和方法可能不会出现在每个 PowerShell 会话中。

有关 Types.ps1xml 文件的详细信息,请参阅 about_Types.ps1xml。 有关 Update-TypeData cmdlet 添加的动态类型数据的详细信息,请参阅 Update-TypeData

此 cmdlet 是在 Windows PowerShell 3.0 中引入的。

示例

示例 1:获取所有扩展类型数据

此示例将获取当前会话中的所有扩展类型数据。

Get-TypeData

示例 2:按名称获取类型数据

此示例将获取当前会话中名称使用“System.IO”进行限定的所有类型数据。

Get-TypeData -TypeName System.IO.*

TypeName                Members
--------                -------
System.IO.DirectoryInfo {[Mode, System.Management.Automation.Runspaces.CodePropert…
System.IO.FileInfo      {[Mode, System.Management.Automation.Runspaces.CodePropert…

示例 3:获取创建属性值的脚本块

此示例将获取一个用于创建 EventLogEntry 对象的 EventID 属性值的脚本块。

(Get-TypeData *EventLogEntry*).Members.EventID

GetScriptBlock                     SetScriptBlock     IsHidden Name
--------------                     --------------     -------- ----
$this.get_EventID() -band 0xFFFF                         False EventID

示例 4:获取定义指定对象的属性的脚本块

此示例将获取一个用于定义 PowerShell 中 System.DateTime 对象的 DateTime 属性的脚本块。

(Get-TypeData -TypeName System.DateTime).Members["DateTime"].GetScriptBlock
if ((& { Set-StrictMode -Version 1; $this.DisplayHint }) -ieq  "Date") {
    "{0}" -f $this.ToLongDateString()
}
elseif ((& { Set-StrictMode -Version 1; $this.DisplayHint }) -ieq "Time") {
    "{0}" -f  $this.ToLongTimeString()
}
else {
    "{0} {1}" -f $this.ToLongDateString(), $this.ToLongTimeString()
}

该命令使用 Get-TypeData cmdlet 来为 System.DataTime 类型获取扩展类型数据。 该命令将获取 TypeData 对象的 Members 属性。

Members 属性包含一个由扩展类型数据定义的属性和方法的哈希表。 Members 哈希表中的每个键均为某个属性或方法名称,每个值均为该属性或方法值的定义。

该命令将获取 Members 中的 DateTime 键及其 GetScriptBlock 属性值。

该输出显示了用于创建 PowerShell 中每个 System.DateTime 对象的 DateTime 属性值的脚本块。

参数

-TypeName

仅将具有指定名称的类型的类型数据指定为数组。 默认情况下,Get-TypeData 将获取会话中的所有类型。

输入类型名称或名称模式。 需要输入类型的完整名称(或带有通配符字符的名称模式),即便是 System 命名空间中的类型也是如此。 支持使用通配符,参数名 TypeName 是可选的。 也可以通过管道将类型名称传递给 Get-TypeData

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

输入

String

可以通过管道将包含类型名称的字符串传递给此 cmdlet。

输出

TypeData

备注

Get-TypeData 将仅获取当前会话中的扩展类型数据。 它不获取位于计算机上但未添加到当前会话中的扩展类型数据,例如在模块中定义但未导入到当前会话中的扩展类型。