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
Обратите внимание, что тип объекта в $original
system.Management.Automation.PSCustomObject, но тип объекта в deserialized.System.Management.Automation.PSCustomObject.$deserialized
Кроме того, 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-файлам. В отличие от Path, значение параметра 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 |
Входные данные
Можно передать строку, содержащую путь к этому командлету.
Выходные данные
Этот командлет возвращает объекты, десериализованные из сохраненных XML-файлов.
Примечания
При указании нескольких значений параметра разделяйте их запятыми. Например, <parameter-name> <value1>, <value2>
.
Связанные ссылки
PowerShell