Export-Clixml

Создает XML-представление объекта или объектов и сохраняет его в файл.

Синтаксис

Export-Clixml
      [-Path] <String>
      -InputObject <PSObject>
      [-Depth <Int32>]
      [-Force]
      [-NoClobber]
      [-Encoding <Encoding>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
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.

"This is a test" | Export-Clixml -Path .\sample.xml

Строка Это тест отправляется по конвейеру. 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

                 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: использует кодировку для набора символов ASCII (7-разрядный).
  • bigendianunicode: кодирует в формате UTF-16 с использованием порядка байтов больших байтов.
  • 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 документации по Encoding.CodePage.

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, 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

Входные данные

PSObject

Вы можете конвейерировать любой объект в Export-Clixml.

Выходные данные

FileInfo

Export-Clixml создает файл, содержащий XML.