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>.