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-представление на основе CLI, сохраняет его в файле. Затем можно использовать командлет для Import-Clixml
повторного создания сохраненного объекта на основе содержимого этого файла. Дополнительные сведения о интерфейсе командной строки см. в разделе Независимость от языка.
Этот командлет аналогичен ConvertTo-Xml
, за исключением того, что Export-Clixml
сохраняет результирующий XML-код в файле. ConvertTo-XML
возвращает XML-код, чтобы продолжить его обработку в PowerShell.
На компьютерах Export-Clixml
Windows полезно экспортировать учетные данные и безопасно защитить строки в формате XML. Пример см. в примере 3.
Примеры
Пример 1. Экспорт строки в XML-файл
В этом примере создается XML-файл, который хранится в текущем каталоге с представлением строки This is a test.
"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
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Depth
Указывает, сколько уровней вложенных объектов включается в XML-представление. Значение по умолчанию — 2
.
Значение по умолчанию можно переопределить для типа объекта в файлах Types.ps1xml
. Дополнительные сведения см. в разделе about_Types.ps1xml.
Type: | Int32 |
Position: | Named |
Default value: | 2 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Указывает тип кодировки для целевого файла. Значение по умолчанию — utf8NoBOM
.
Ниже приведены допустимые значения для этого параметра.
ascii
: использует кодировку для 7-разрядной кодировки ASCII.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 также разрешает числовые идентификаторы зарегистрированных кодовых страниц (например -Encoding 1251
, ) или строковые имена зарегистрированных кодовых страниц (например -Encoding "windows-1251"
, ). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.
Примечание
UTF-7* больше не рекомендуется использовать. В PowerShell 7.1 выдается предупреждение, если указать utf7
для параметра Encoding .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Принудительное выполнение команды без запроса на подтверждение пользователем.
В результате командлет снимает атрибут только для чтения выходного файла при необходимости. Командлет попытается сбросить атрибут "только для чтения" после выполнения команды.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Задает объект для преобразования. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты. Объекты также можно передать в Export-Clixml
.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Указывает путь к файлу, где будет храниться XML-представление объекта. В отличие от Path, значение параметра LiteralPath используется точно так же, как он типизированный. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки предписывают PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoClobber
Указывает, что командлет не перезаписывает содержимое существующего файла. По умолчанию, если файл существует по указанному пути, Export-Clixml
он перезаписывается без предупреждения.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Указывает путь к файлу, где будет храниться XML-представление объекта.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
В этот командлет можно выполнить конвейер любого объекта.
Выходные данные
Этот командлет возвращает объект FileInfo , представляющий созданный файл с сохраненными данными.
Связанные ссылки
- ConvertTo-Html
- ConvertTo-Xml
- Export-Csv
- Import-Clixml
- Join-Path
- Securely Store Credentials on Disk (Безопасное хранение учетных данных на диске)
- Use PowerShell to Pass Credentials to Legacy Systems (Передача учетных данных в устаревшие системы с помощью PowerShell)
- Windows.Security.Cryptography.DataProtection