Поиск по сайту:

Import-Clixml (Microsoft.PowerShell.Utility)


Import-Clixml

Модуль:
Microsoft.PowerShell.Utility

Импортирует файл CLIXML и создает соответствующие объекты в PowerShell.

Синтаксис

Import-Clixml
      [-Path] <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]
Import-Clixml
      -LiteralPath <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]

Описание

Командлет Import-Clixml импортирует объекты, сериализованные в XML-файл Common Language Infrastructure (CLI). Ценным использованием Import-Clixml на компьютерах Windows является импорт учетных данных и защищенных строк, которые были экспортированы как безопасный XML с помощью Export-Clixml. Пример №2 показывает, как использовать Import-Clixml для импорта защищенного объекта учетных данных.

Данные CLIXML десериализуются обратно в объекты PowerShell. Однако десериализованные объекты не являются живыми объектами. Они представляют собой снимок объектов на момент сериализации. Десериализованные объекты включают свойства, но не методы.

Свойство TypeNames содержит исходное имя типа с префиксом Deserialized. В примере №3 показано свойство TypeNames десериализованного объекта.

Import-Clixml использует метку порядка байтов (BOM) для определения формата кодировки файла. Если у файла нет спецификации, предполагается, что используется кодировка UTF8.

Дополнительные сведения о CLI см. в разделе Независимость от языка.

Примеры

Пример 1. Импортируйте сериализованный файл и воссоздайте объект.

В этом примере используется командлет Export-Clixml для сохранения сериализованной копии информации о процессе, возвращаемой Get-Process. Import-Clixml извлекает содержимое сериализованного файла и воссоздает объект, который хранится в переменной $Processes.

Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml

Пример 2. Импортируйте безопасный объект учетных данных

В этом примере, учитывая учетные данные, которые вы сохранили в переменной $Credential, запустив командлет Get-Credential, вы можете запустить Export-Clixml командлет для сохранения учетных данных на диск.

Это важно

Export-Clixml экспортирует только зашифрованные учетные данные в Windows. В операционных системах, отличных от Windows, таких как macOS и Linux, учетные данные экспортируются в виде обычного текста.

$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential | Export-Clixml $Credxmlpath
$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential = Import-Clixml $Credxmlpath

Командлет Export-Clixml шифрует объекты учетных данных с помощью API защиты данных Windows. Шифрование гарантирует, что только ваша учетная запись пользователя сможет расшифровать содержимое объекта учетных данных. Экспортированный файл CLIXML не может использоваться на другом компьютере или другим пользователем.

В этом примере файл, в котором хранятся учетные данные, представлен TestScript.ps1.credential. Замените TestScript именем сценария, с помощью которого вы загружаете учетные данные.

Вы отправляете объект учетных данных по конвейеру в Export-Clixml и сохраняете его по пути $Credxmlpath, указанному в первой команде.

Чтобы автоматически импортировать учетные данные в ваш скрипт, выполните две последние команды. Запустите Import-Clixml, чтобы импортировать защищенный объект учетных данных в ваш скрипт. Этот импорт исключает риск раскрытия паролей в виде простого текста в вашем сценарии.

Пример 3. Проверка свойства TypeNames десериализованного объекта.

В этом примере показан импорт объекта, хранящегося как данные CLIXML. Данные десериализуются обратно в объект PowerShell. Однако десериализованный объект не является живым объектом. Они представляют собой снимок объектов на момент сериализации. Десериализованные объекты включают свойства, но не методы.

$original = [pscustomobject] @{
    Timestamp = Get-Date
    Label     = 'Meeting event'
}
$original | Add-Member -MemberType ScriptMethod -Name GetDisplay -Value {
    '{0:yyyy-MM-dd HH:mm} {1}' -f $this.Timestamp, $this.Label
}
$original | Get-Member -MemberType ScriptMethod

TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Label       NoteProperty string Label=Meeting event
Timestamp   NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
GetDisplay  ScriptMethod System.Object GetDisplay();

$original | Export-Clixml -Path event.clixml
$deserialized = Import-CliXml -Path event.clixml
$deserialized | Get-Member

TypeName: Deserialized.System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Label       NoteProperty string Label=Meeting event
Timestamp   NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM

Обратите внимание, что тип объекта в $original — System.Management.Automation.PSCustomObject, а тип объекта в $deserialized — Десериализованный.System.Management.Automation.PSCustomObject. Кроме того, в десериализованном объекте отсутствует метод GetDisplay().

Параметры

-First

Получает только указанное количество объектов. Введите количество объектов, которые нужно получить.

Тип :

UInt64

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-IncludeTotalCount

Сообщает общее количество объектов в наборе данных, за которыми следуют выбранные объекты. Если командлет не может определить общее количество, он отображает Неизвестное общее количество. Целое число имеет свойство Accuracy, которое указывает надежность значения общего количества. Значение Accuracy находится в диапазоне от 0.0 до 1.0, где 0.0 означает, что командлет не смог подсчитать объекты. 1,0 означает, что подсчет точный, а значение между 0,0 и 1,0 указывает на более надежную оценку.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-LiteralPath

Указывает путь к файлам XML. В отличие от Path, значение параметра LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности.

Тип :

String[]

Псевдонимы:

PSPath, LP

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-Path

Указывает путь к файлам XML.

Тип :

String[]

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-Skip

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

Тип :

UInt64

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

Строка

Вы можете передать строку, содержащую путь к этому командлету.

Выходы

PSObject

Этот командлет возвращает объекты, десериализованные из сохраненных файлов XML.

Примечания

При указании нескольких значений параметра разделяйте их запятыми. Например, <имя-параметра> <значение1>, <значение2>.