Export-Clixml
Создает xml-представление объекта или объектов и сохраняет его в файле.
Синтаксис
ByPath (по умолчанию)
Export-Clixml
[-Path] <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Export-Clixml
-LiteralPath <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Export-Clixml сериализовал объект в XML-представление, основанное на общей языковой инфраструктуре (CLI), и сохранил его в файле. Затем можно использовать командлет Import-Clixml для повторного создания сохраненного объекта на основе содержимого этого файла. Дополнительные сведения о интерфейсе командной строки см. в независимости языка.
Этот командлет похож на ConvertTo-Xml, за исключением того, что Export-Clixml сохраняет полученный XML-код в файле.
ConvertTo-Xml возвращает XML-файл, чтобы продолжить обработку его в PowerShell.
Ценное использование Export-Clixml на компьютерах Windows заключается в том, чтобы экспортировать учетные данные и безопасные строки в виде XML. Пример см. в примере 3.
Примеры
Пример 1. Экспорт строки в XML-файл
В этом примере создается XML-файл, который хранится в текущем каталоге, представление строки Это тестовый.
"This is a test" | Export-Clixml -Path .\sample.xml
Строка This is a test отправляется по конвейеру.
Export-Clixml использует параметр path для создания XML-файла с именем sample.xml в текущем каталоге.
Пример 2. Экспорт объекта в XML-файл
В этом примере показано, как экспортировать объект в XML-файл, а затем создать объект, импортируя XML-файл из файла.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
Командлет Get-Acl получает дескриптор безопасности файла Test.txt. Он отправляет объект вниз конвейера, чтобы передать дескриптор безопасности в Export-Clixml. Xml-представление объекта хранится в файле с именем FileACL.xml.
Командлет Import-Clixml создает объект из XML в файле FileACL.xml. Затем он сохраняет объект в переменной $fileacl.
Пример 3. Шифрование экспортированного объекта учетных данных в Windows
В этом примере, имея учетные данные, которые вы сохранили в переменной $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, чтобы импортировать защищенный объект учетных данных в скрипт. Этот импорт устраняет риск раскрытия паролей в виде открытого текста в вашем скрипте.
Пример 4. Экспорт объекта учетных данных в Linux или macOS
В этом примере мы создадим PSCredential в переменной $Credential с помощью командлета Get-Credential. Затем мы используем Export-Clixml для сохранения учетных данных на диске.
Это важно
Export-Clixml экспортирует только зашифрованные учетные данные в Windows. В операционных системах, отличных от Windows, таких как macOS и Linux, учетные данные экспортируются в виде обычного текста, хранящегося в виде массива символов Юникода. Это обеспечивает некоторую маскировку, но не обеспечивает шифрование.
PS> $Credential = Get-Credential
PowerShell credential request
Enter your credentials.
User: User1
Password for user User1: ********
PS> $Credential | Export-Clixml ./cred2.xml
PS> Get-Content ./cred2.xml
...
<Props>
<S N="UserName">User1</S>
<SS N="Password">700061007300730077006f0072006400</SS>
</Props>
...
PS> 'password' | Format-Hex -Encoding unicode
Label: String (System.String) <52D60C91>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 p a s s w o r d
Выходные данные Get-Content в этом примере были усечены, чтобы сосредоточиться на информации об учетных данных в XML-файле. Обратите внимание, что значение обычного текста пароля хранится в XML-файле в виде массива символов Юникода, как показано в Format-Hex. Поэтому значение закодировано, но не зашифровано.
Параметры
-Confirm
Запрашивает подтверждение перед запуском cmdlet.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | cf |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Depth
Указывает, сколько уровней содержащихся объектов включено в xml-представление. Значение по умолчанию — 2.
Значение по умолчанию можно переопределить для типа объекта в файлах Types.ps1xml. Дополнительные сведения см. в разделе about_Types.ps1xml.
Свойства параметра
| Тип: | Int32 |
| Default value: | 2 |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Encoding
Указывает тип кодирования для целевого файла. Значение по умолчанию — utf8NoBOM.
Допустимые значения для этого параметра приведены следующим образом:
-
ascii: использует кодировку для набора символов ASCII (7-разрядный). -
ansi. Использует кодировку текущей культуры для кодовой страницы ANSI. Этот параметр добавлен в версии 7.4. -
bigendianunicode: кодирует в формате UTF-16 с использованием большого порядка байтов. -
bigendianutf32: кодирует в формате UTF-32 в порядке старших байтов. -
oem. Использует кодировку по умолчанию для MS-DOS и консольных программ. -
unicode: кодирует в формате UTF-16 в порядке байтов младшего разряда. -
utf7: кодирует в формате UTF-7. -
utf8: кодирует в формате UTF-8. -
utf8BOM. Кодирует в формате UTF-8 с пометкой порядка байтов (Byte Order Mark, BOM) -
utf8NoBOM: Кодирует в формате UTF-8 без метки порядка байтов (BOM) -
utf32: кодирует в формате UTF-32.
Начиная с PowerShell 6.2, параметр кодировки
Начиная с PowerShell 7.4, можно использовать значение Ansi для параметра кодировки, чтобы передать числовой идентификатор ANSI-страницы текущей культуры, не указывая его вручную.
Замечание
UTF-7* больше не рекомендуется использовать. Начиная с версии PowerShell 7.1, выводится предупреждение, если задать utf7 как параметр кодировки.
Свойства параметра
| Тип: | Encoding |
| Default value: | UTF8NoBOM |
| Допустимые значения: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Force
Принудительно выполняется команда без запроса подтверждения пользователя.
При необходимости командлет очищает атрибут только для чтения выходного файла. Командлет попытается сбросить атрибут "только для чтения", когда команда завершится.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-InputObject
Указывает объект, который необходимо преобразовать. Введите переменную, содержащую объекты, или введите команду или выражение, которое получает объекты. Также можно передать объекты в Export-Clixml.
Свойства параметра
| Тип: | PSObject |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | True |
| Значение из конвейера: | True |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-LiteralPath
Указывает путь к файлу, в котором будет храниться XML-представление объекта. В отличие от пути, значение параметра LiteralPath используется точно так, как напечатано. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки указывают PowerShell на то, что не следует интерпретировать какие-либо символы как управляющие последовательности.
Свойства параметра
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | PSPath, LP |
Наборы параметров
ByLiteralPath
| Position: | Named |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-NoClobber
Указывает, что командлет не перезаписывает содержимое существующего файла. По умолчанию, если файл существует в указанном пути, Export-Clixml перезаписывает файл без предупреждения.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | NoOverwrite |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Path
Указывает путь к файлу, в котором будет храниться XML-представление объекта.
Свойства параметра
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
ByPath
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-WhatIf
Показывает, что произойдет, если командлет будет запущен. Командлет не выполняется.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | wi |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
PSObject
Вы можете передавать на обработку любой объект этому командлету.
Выходные данные
FileInfo
Этот командлет возвращает объект FileInfo, представляющий созданный файл с сохраненными данными.