Поделиться через


Update-TypeData

Обновляет данные расширенного типа во время сеанса.

Синтаксис

Update-TypeData
      [[-AppendPath] <String[]>]
      [-PrependPath <String[]>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Update-TypeData
      [-MemberType <PSMemberTypes>]
      [-MemberName <String>]
      [-Value <Object>]
      [-SecondValue <Object>]
      [-TypeConverter <Type>]
      [-TypeAdapter <Type>]
      [-SerializationMethod <String>]
      [-TargetTypeForDeserialization <Type>]
      [-SerializationDepth <Int32>]
      [-DefaultDisplayProperty <String>]
      [-InheritPropertySerializationSet <Nullable`1>]
      [-StringSerializationSource <String>]
      [-DefaultDisplayPropertySet <String[]>]
      [-DefaultKeyPropertySet <String[]>]
      [-PropertySerializationSet <String[]>]
      -TypeName <String>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Update-TypeData
      [-Force]
      [-TypeData] <TypeData[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Описание

Командлет Update-TypeData обновляет данные расширенного типа в сеансе, перезагружая Types.ps1xml файлы в память и добавляя новые данные расширенного типа.

По умолчанию PowerShell загружает данные расширенных типов по мере необходимости. Без параметров перезагружает все Types.ps1xml файлы, Update-TypeData загруженные в сеансе, включая файлы всех типов, которые вы добавили. Параметры можно использовать для добавления новых файлов типов, а также добавления и замены данных расширенного Update-TypeData типа.

Командлет Update-TypeData можно использовать для предварительной загрузки данных всех типов. Эта функция особенно полезна при разработке собственных типов, так как позволяет загружать их для тестирования.

Начиная с Windows PowerShell 3.0, можно использовать для Update-TypeData добавления и замены данных расширенного типа в сеансе без использования Types.ps1xml файла. Данные типа, добавленные динамически, то есть без помощи файла, добавляются только в текущий сеанс. Чтобы добавить данные типа во все сеансы, добавьте Update-TypeData команду в профиль PowerShell. Дополнительные сведения см. в разделе about_Profiles.

Кроме того, начиная с Windows PowerShell 3.0, можно использовать Get-TypeData командлет для получения расширенных типов в текущем сеансе Remove-TypeData и командлет для удаления расширенных типов из текущего сеанса.

Исключения, возникающие в свойствах или при добавлении свойств в Update-TypeData команду, не сообщают об ошибках. Это необходимо для подавления исключений, которые могут возникнуть во многих распространенных типах в процессе форматирования и вывода. При получении свойств .NET можно обойти подавление исключений с помощью синтаксиса метода, как показано в следующем примере:

"hello".get_Length()

Обратите внимание, что синтаксис метода можно использовать только со свойствами .NET. Свойства, добавленные при выполнении командлета, Update-TypeData не могут использовать синтаксис метода.

Дополнительные сведения о файлах Types.ps1xml в PowerShell см. в разделе about_Types.ps1xml.

Примеры

Пример 1. Обновление расширенных типов

Update-TypeData

Эта команда обновляет конфигурацию расширенного типа из Types.ps1xml файлов, которые уже использовались в сеансе.

Пример 2. Типы обновления несколько раз

В этом примере показано, как обновлять типы в файле типов несколько раз в одном сеансе.

Первая команда обновляет конфигурацию расширенного Types.ps1xml типа из файлов, обрабатывая TypesA.types.ps1xml сначала файлы и TypesB.types.ps1xml .

Вторая команда показывает, как повторно обновить TypesA.types.ps1xml , например, если вы добавили или изменили тип в файле. Вы можете либо повторить предыдущую команду для TypesA.types.ps1xml файла, либо выполнить Update-TypeData команду без параметров, так как TypesA.types.ps1xml уже находится в списке типов файлов для текущего сеанса.

Update-TypeData -PrependPath TypesA.types.ps1xml, TypesB.types.ps1xml
Update-TypeData -PrependPath TypesA.types.ps1xml

Пример 3. Добавление свойства скрипта в объекты DateTime

В этом примере используется для Update-TypeData добавления свойства скрипта Quarter к объектам System.DateTime в текущем сеансе, например к объектам, возвращенным командлетом Get-Date .

Update-TypeData -TypeName "System.DateTime" -MemberType ScriptProperty -MemberName "Quarter" -Value {
  if ($this.Month -in @(1,2,3)) {"Q1"}
  elseif ($this.Month -in @(4,5,6)) {"Q2"}
  elseif ($this.Month -in @(7,8,9)) {"Q3"}
  else {"Q4"}
}
(Get-Date).Quarter

Q1

Команда Update-TypeData использует параметр TypeName для указания типа System.DateTime , параметр MemberName для указания имени нового свойства, свойство MemberType для указания типа ScriptProperty и параметр Value для указания скрипта, который определяет годовой квартал.

Значение свойства Value — это сценарий, вычисляющий текущий годовой квартал. Блок скрипта использует автоматическую $this переменную для представления текущего экземпляра объекта и оператор In, чтобы определить, отображается ли значение месяца в каждом массиве целых чисел. Дополнительные сведения об операторе см. в -inразделе about_Comparison_Operators.

Вторая команда возвращает новое свойство Quarter текущей даты.

Пример 4. Обновление типа, отображаемого в списках по умолчанию

В этом примере показано, как задать свойства типа, который отображается в списках по умолчанию, то есть если свойства не указаны. Так как данные типа не указаны в Types.ps1xml файле, они действуют только в текущем сеансе.

Update-TypeData -TypeName "System.DateTime" -DefaultDisplayPropertySet "DateTime, DayOfYear, Quarter"
Get-Date | Format-List

Thursday, March 15, 2012 12:00:00 AM
DayOfYear : 75
Quarter   : Q1

Первая команда использует командлет , Update-TypeData чтобы задать свойства списка по умолчанию для типа System.DateTime . С помощью параметра TypeName она определяет тип, а с помощью параметраDefaultDisplayPropertySet — свойства списка по умолчанию. Выбранные свойства включают новое свойство скрипта Quarter , которое было добавлено в предыдущем примере.

Вторая команда использует Get-Date командлет для получения объекта System.DateTime , представляющего текущую дату. Команда использует оператор конвейера (|) для отправки объекта DateTime командлету Format-List . Format-List Так как команда не указывает свойства, отображаемые в списке, PowerShell использует значения по умолчанию, установленные командой Update-TypeData .

Пример 5. Обновление данных типа для переданного объекта

Get-Module | Update-TypeData -MemberType ScriptProperty -MemberName "SupportsUpdatableHelp" -Value {
  if ($this.HelpInfoUri) {$True} else {$False}
}
Get-Module -ListAvailable | Format-Table Name, SupportsUpdatableHelp

Name                             SupportsUpdatableHelp
----                             ---------------------
Microsoft.PowerShell.Diagnostics                  True
Microsoft.PowerShell.Host                         True
Microsoft.PowerShell.Management                   True
Microsoft.PowerShell.Security                     True
Microsoft.PowerShell.Utility                      True
Microsoft.WSMan.Management                        True
PSDiagnostics                                    False
PSScheduledJob                                    True
PSWorkflow                                        True
ServerManager                                     True
TroubleshootingPack                              False

В этом примере показано, что при конвейере объекта Update-TypeDataв добавляет Update-TypeData данные расширенного типа для типа объекта.

Этот метод быстрее, чем использование командлета Get-MemberGet-Type или метода для получения типа объекта. Однако если передать коллекцию объектов Update-TypeDataв , она обновляет данные типа первого типа объекта, а затем возвращает ошибку для всех остальных объектов в коллекции, так как член уже определен в типе.

Первая команда использует командлет для Get-Module получения модуля PSScheduledJob. Команда передает объект модуля командлету Update-TypeData , который обновляет данные типа System.Management.Automation.PSModuleInfo и типы, производные от него, например тип ModuleInfoGrouping, который Get-Module возвращается при использовании параметра ListAvailable в команде.

Команды Update-TypeData добавляют свойство скрипта SupportsUpdatableHelp ко всем импортированным модулям. Значение параметра Value является скриптом, который возвращает $True значение , если свойство HelpInfoUri модуля заполнено, и $False в противном случае.

Вторая команда передает объекты модуля из Get-ModuleFormat-Table в командлет, который отображает свойства Name и SupportsUpdatableHelp всех модулей в списке.

Параметры

-AppendPath

Указывает путь к необязательным файлам .ps1xml . Эти файлы загружаются в том порядке, в котором они были указаны, после загрузки встроенных файлов. Вы также можете передать значение AppendPath в Update-TypeData.

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

-Confirm

Запрос подтверждения перед выполнением командлета.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultDisplayProperty

Указывает свойство типа, отображаемое командлетом Format-Wide , если другие свойства не указаны.

Введите имя стандартного или расширенного свойства типа. В качестве значения этого параметра может выступать имя типа, добавленного в рамках той же команды.

Это значение действует только в том случае, если для типа в файле не определены широкие Format.ps1xml представления.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultDisplayPropertySet

Определяет одно или несколько свойств типа. Эти свойства отображаются командлетами Format-List, и Format-Custom , Format-Tableесли другие свойства не указаны.

Введите имена стандартных или расширенных свойств типа. В качестве значения этого параметра могут выступать имена типов, добавленных в рамках той же команды.

Это значение действует только при отсутствии списка, таблицы или пользовательских представлений, соответственно определенных для типа в Format.ps1xml файле.

Этот параметр впервые появился в Windows PowerShell 3.0.

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

-DefaultKeyPropertySet

Определяет одно или несколько свойств типа. Эти свойства используются командлетами Group-Object и Sort-Object , если другие свойства не указаны.

Введите имена стандартных или расширенных свойств типа. В качестве значения этого параметра могут выступать имена типов, добавленных в рамках той же команды.

Этот параметр впервые появился в Windows PowerShell 3.0.

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

-Force

Указывает, что командлет использует указанные данные типа, даже если данные типа уже указаны для этого типа.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InheritPropertySerializationSet

Указывает, наследуется ли набор сериализуемых свойств. Значение по умолчанию — $Null. Допустимые значения для этого параметра:

  • $True. набор свойств наследуется.
  • $False. набор свойств не наследуется.
  • $Null. наследование не определено.

Этот параметр действителен, только если значение параметра SerializationMethod равно SpecificProperties. Если этот параметр имеет значение , требуется $Falseпараметр PropertySerializationSet .

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:Nullable<T>[Boolean]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MemberName

Определяет имя свойства или метода.

Вместе с параметрами TypeName, MemberType, Value и SecondValue этот параметр позволяет добавить или изменить свойство или метод типа.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MemberType

Определяет тип элемента для добавления или изменения.

Вместе с параметрами TypeName, MemberType, Value и SecondValue этот параметр позволяет добавить или изменить свойство или метод типа. Допустимые значения для этого параметра:

  • ПсевдонимСвойства
  • CodeMethod
  • CodeProperty
  • Примечаниесвойства
  • ScriptMethod
  • ScriptProperty

Сведения об этих значениях см. в разделе Перечисление PSMemberTypes.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:PSMemberTypes
Accepted values:NoteProperty, AliasProperty, ScriptProperty, CodeProperty, ScriptMethod, CodeMethod
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PrependPath

Указывает путь к необязательным .ps1xml файлам. Эти файлы загружаются в том порядке, в котором они были указаны, до загрузки встроенных файлов.

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

-PropertySerializationSet

Определяет имена сериализуемых свойств. Используйте этот параметр, если параметр SerializationMethod имеет значение SpecificProperties.

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

-SecondValue

Определяет дополнительные значения для элементов AliasProperty, ScriptProperty, CodeProperty, или CodeMethod.

Используйте этот параметр с параметрами TypeName, MemberType, Value и SecondValue , чтобы добавить или изменить свойство или метод типа.

Если значение параметра MemberType равно AliasProperty, значение параметра SecondValue должно быть типом данных. PowerShell преобразует (то есть приводит) значение свойства псевдонима к указанному типу. Например, если добавить свойство псевдонима, которое предоставляет альтернативное имя для строкового свойства, можно также указать Значение SecondValueSystem.Int32 для преобразования значения строки с псевдонимом в целое число.

Если параметр MemberType имеет ScriptPropertyзначение , можно использовать параметр SecondValue , чтобы указать дополнительный блок скрипта. Блок скрипта в значении параметра Value получает значение переменной. Блок скрипта в значении параметра SecondValue устанавливает значение переменной.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SerializationDepth

Определяет, сколько уровней объектов типа будут сериализованы как строки. Значение 1 по умолчанию сериализует объект и его свойства. Значение сериализует 0 объект, но не его свойства. Значение 2 сериализует объект, его свойства и все объекты в значениях свойств.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:Int32
Position:Named
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SerializationMethod

Указывает метод сериализации для типа. Метод сериализации определяет сериализуемые свойства типа и метод сериализации. Допустимые значения для этого параметра:

  • AllPublicProperties. сериализуются все открытые свойства типа. Можно использовать параметр SerializationDepth, позволяющий включить сериализацию дочерних свойств.
  • String. типа сериализуется в виде строки. Можно использовать параметр StringSerializationSource, позволяющий указать свойство типа для использования в результате сериализации. В противном случае тип сериализуется с использованием метода объекта ToString.
  • SpecificProperties. Сериализуйте только указанные свойства этого типа. Параметр PropertySerializationSet позволяет указать, какие свойства типа требуют сериализации. Можно также использовать параметр InheritPropertySerializationSet, определяющий наследование набора свойств, и параметр SerializationDepth, определяющий сериализацию дочерних свойств.

В PowerShell методы сериализации хранятся во внутренних объектах PSStandardMembers .

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StringSerializationSource

Определяет имя свойства типа. Значение указанного свойства используется в качестве результате сериализации. Этот параметр действителен, только если параметр SerializationMethod имеет значение String.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TargetTypeForDeserialization

Определяет, в какой типа должны конвертироваться объекты данного типа при десериализации.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:Type
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TypeAdapter

Указывает тип адаптера типа, например Microsoft.PowerShell.Cim.CimInstanceAdapter. Адаптер типа позволяет PowerShell получить члены типа.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:Type
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TypeConverter

Определяет преобразователь типов для конвертации значений из одного типа в другой. Если для типа определен преобразователь, для конвертации используется экземпляр этого преобразователя.

Введите значение System.Type, которое является производным от класса System.ComponentModel.TypeConverter или System.Management.Automation.PSTypeConverter.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:Type
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TypeData

Указывает массив данных типа, который этот командлет добавляет в сеанс. Введите переменную, содержащую объект TypeData или команду, которая получает объект TypeData , например Get-TypeData команду. Вы также можете передать объект TypeData в Update-TypeData.

Этот параметр впервые появился в Windows PowerShell 3.0.

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

-TypeName

Определяет имя типа для расширения.

Для типов в пространстве имен System необходимо указывать короткое имя. В остальных случаях требуется полное имя типа. Подстановочные знаки не поддерживаются.

Имена типов можно передать в Update-TypeData. При конвейере объекта в Update-TypeDataполучает Update-TypeData имя типа объекта и данные типа для типа объекта.

Вместе с параметрами MemberName, MemberType, Value и SecondValue этот параметр позволяет добавить или изменить свойство или метод типа.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Value

Определяет значение свойства или метода.

При добавлении AliasPropertyэлемента , CodeProperty, ScriptPropertyили CodeMethod можно использовать параметр SecondValue для добавления дополнительных сведений.

Вместе с параметрами MemberName, MemberType, Value и SecondValue этот параметр позволяет добавить или изменить свойство или метод типа.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Показывает, что произойдет при запуске командлета. Командлет не выполняется.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

String

Можно передать строку, содержащую значения параметров AppendPath, TypeName или TypeData , в Update-TypeData.

Выходные данные

None

Этот командлет не возвращает никакие выходные данные.