Поиск по сайту:

Export-Clixml (Microsoft.PowerShell.Utility)


Export-Clixml

Модуль:
Microsoft.PowerShell.Utility

Создает представление объекта или объектов на основе 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-представление Common Language Infrastructure (CLI) и сохраняет его в файле. Затем вы можете использовать командлет Import-Clixml, чтобы воссоздать сохраненный объект на основе содержимого этого файла. Дополнительные сведения о CLI см. в разделе Независимость от языка.

Этот командлет аналогичен 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

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

Псевдонимы:

cf

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Depth

Указывает, сколько уровней содержащихся объектов включено в представление XML. Значение по умолчанию — 2.

Значение по умолчанию можно переопределить для типа объекта в файлах Types.ps1xml. Дополнительные сведения см. в разделе about_Types.ps1xml.

Тип :

Int32

Позиция:

Именованный

Значение по умолчанию:

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 также позволяет использовать числовые идентификаторы зарегистрированных кодовых страниц (например, -Encoding 1251) или строковые имена зарегистрированных кодовых страниц (например, -Encoding). "windows-1251"). Дополнительные сведения см. в документации .NET для Encoding.CodePage.

Начиная с PowerShell 7.4, вы можете использовать значение Ansi для параметра Encoding, чтобы передать числовой идентификатор для текущей кодовой страницы ANSI языка и региональных параметров без необходимости указывать его вручную.

Примечание

UTF-7* больше не рекомендуется использовать. Начиная с PowerShell 7.1, предупреждение выводится, если вы укажете utf7 для параметра Кодировка.

Тип :

Кодирование

Принятые значения:

ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32

Позиция:

Именованный

Значение по умолчанию:

UTF8NoBOM

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Force

Принудительно запускает команду без запроса подтверждения пользователя.

Заставляет командлет при необходимости очищать атрибут выходного файла только для чтения. После завершения команды командлет попытается сбросить атрибут «только для чтения».

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-InputObject

Указывает объект для преобразования. Введите переменную, содержащую объекты, или введите команду или выражение, позволяющее получить объекты. Вы также можете передать объекты в Export-Clixml.

Тип :

PSОбъект

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-LiteralPath

Указывает путь к файлу, в котором будет храниться XML-представление объекта. В отличие от Path, значение параметра LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности.

Тип :

String

Псевдонимы:

PSPath, LP

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-NoClobber

Указывает, что командлет не перезаписывает содержимое существующего файла. По умолчанию, если файл существует по указанному пути, Export-Clixml перезаписывает файл без предупреждения.

Тип :

SwitchParameter

Псевдонимы:

NoOverwrite

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Path

Указывает путь к файлу, в котором будет храниться XML-представление объекта.

Тип :

String

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-WhatIf

Показывает, что произойдет, если командлет запустится. Командлет не запускается.

Тип :

SwitchParameter

Псевдонимы:

wi

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

PSObject

В этот командлет можно передать любой объект.

Выходы

Информация о файле

Этот командлет возвращает объект FileInfo, представляющий созданный файл с сохраненными данными.