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


Import-Clixml

Импортирует файл 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) для обнаружения формата кодирования файла. Если файл не имеет BOM, предполагается, что кодировка — UTF8.

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

Примеры

Пример 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

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

Параметры

-First

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

Тип:UInt64
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-IncludeTotalCount

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

Тип:SwitchParameter
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-LiteralPath

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

Тип:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Path

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

Тип:String[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Skip

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

Тип:UInt64
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

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

String

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

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

PSObject

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

Примечания

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