Export-Clixml
Создает xml-представление объекта или объектов и сохраняет его в файле.
Синтаксис
Export-Clixml
[-Depth <Int32>]
[-Path] <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Clixml
[-Depth <Int32>]
-LiteralPath <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Export-Clixml
сериализовал объект в xml-представление на основе XML-кода на основе XML- файла. Затем можно использовать командлет 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
Запрашивает подтверждение перед запуском командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Depth
Указывает, сколько уровней содержащихся объектов включено в xml-представление. Значение по умолчанию — 2
.
Значение по умолчанию можно переопределить для типа объекта в файлах Types.ps1xml
. Дополнительные сведения см. в разделе about_Types.ps1xml.
Тип: | Int32 |
Position: | Named |
Default value: | 2 |
Обязательно: | 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 с меткой порядка байтов (BOM) -
utf8NoBOM
. Кодирование в формате UTF-8 без метки порядка байтов (BOM) -
utf32
: кодирует в формате UTF-32.
Начиная с PowerShell 6.2, параметр кодировки также позволяет числовым идентификаторам зарегистрированных кодовых страниц (например, -Encoding 1251
) или строковым именам зарегистрированных кодовых страниц (например, -Encoding "windows-1251"
). Дополнительные сведения см. в документации по .NET для Кодировка.CodePage.
Начиная с PowerShell 7.4, можно использовать значение Ansi
для параметра кодировки для передачи числового идентификатора для кодовой страницы ANSI текущего языка и региональных параметров, не указывая ее вручную.
Заметка
UTF-7* больше не рекомендуется использовать. По состоянию на PowerShell 7.1 предупреждение записывается, если указать utf7
для параметра кодировки.
Тип: | Encoding |
Допустимые значения: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Force
Принудительно выполняется команда без запроса подтверждения пользователя.
При необходимости командлет очищает атрибут только для чтения выходного файла. Командлет попытается сбросить атрибут только для чтения после завершения команды.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Указывает объект, который необходимо преобразовать. Введите переменную, содержащую объекты, или введите команду или выражение, которое получает объекты. Можно также передать объекты в Export-Clixml
.
Тип: | PSObject |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-LiteralPath
Указывает путь к файлу, в котором будет храниться XML-представление объекта. В отличие от пути, значение параметра LiteralPath используется точно так же, как он типизированный. Символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Тип: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-NoClobber
Указывает, что командлет не перезаписывает содержимое существующего файла. По умолчанию, если файл существует в указанном пути, Export-Clixml
перезаписывает файл без предупреждения.
Тип: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Path
Указывает путь к файлу, в котором будет храниться XML-представление объекта.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет, если командлет выполняется. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете конвейерировать любой объект в этот командлет.
Выходные данные
Этот командлет возвращает объект FileInfo, представляющий созданный файл с сохраненными данными.
Связанные ссылки
PowerShell