Share via


Export-Clixml

개체 또는 개체의 XML 기반 표현을 만들어 파일에 저장합니다.

Syntax

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>]

Description

cmdlet은 Export-Clixml 개체를 CLI(공용 언어 인프라) XML 기반 표현으로 직렬화하여 파일에 저장합니다. 그런 다음 cmdlet을 Import-Clixml 사용하여 해당 파일의 내용에 따라 저장된 개체를 다시 만들 수 있습니다. CLI에 대한 자세한 내용은 언어 독립성(Language Independence)을 참조하세요.

이 cmdlet은 결과 XML을 파일에 저장한다는 점을 Export-Clixml 제외하고 유사ConvertTo-Xml합니다. ConvertTo-XML 는 XML을 반환하므로 PowerShell에서 계속 처리할 수 있습니다.

Windows 컴퓨터에서 중요한 사용 Export-Clixml 은 자격 증명을 내보내고 문자열을 안전하게 XML로 보호하는 것입니다. 예제는 예제 3을 참조하세요.

예제

예제 1: XML 파일로 문자열 내보내기

다음은 현재 디렉터리에 저장되는 XML 파일을 만드는 예제로, 테스트인 문자열의 표현입니다.

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

문자열 This is a test 이 파이프라인 아래로 전송됩니다. Export-ClixmlPath 매개 변수를 사용하여 현재 디렉터리에 이름이 지정된 sample.xml XML 파일을 만듭니다.

예제 2: XML 파일로 개체 내보내기

이 예제에서는 개체를 XML 파일로 내보낸 다음 파일에서 XML을 가져와 개체를 만드는 방법을 보여 줍니다.

Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml

cmdlet은 Get-Acl 파일의 Test.txt 보안 설명자를 가져옵니다. 파이프라인 아래로 개체를 보내 보안 설명자를 전달합니다 Export-Clixml. 개체의 XML 기반 표현은 이름이 지정된 FileACL.xml파일에 저장됩니다.

cmdlet은 Import-Clixml 파일의 XML에서 개체를 FileACL.xml 만듭니다. 그런 다음 변수에 개체를 $fileacl 저장합니다.

예제 3: Windows에서 내보낸 자격 증명 개체 암호화

이 예제에서는 cmdlet을 실행하여 변수에 $Credential 저장한 자격 증명이 Get-Credential 지정된 경우 cmdlet을 실행 Export-Clixml 하여 자격 증명을 디스크에 저장할 수 있습니다.

Important

Export-Clixml 는 Windows에서 암호화된 자격 증명만 내보냅니다. macOS 및 Linux와 같은 비 Windows 운영 체제에서 자격 증명은 유니코드 문자 배열로 저장된 일반 텍스트로 내보내집니다. 이 경우 일부 난독 처리가 제공되지만 암호화는 제공하지 않습니다.

$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

cmdlet은 Export-Clixml Windows Data Protection API를 사용하여 자격 증명 개체를 암호화합니다. 암호화를 사용하면 해당 컴퓨터의 사용자 계정만 자격 증명 개체의 내용을 해독할 수 있습니다. 내보낸 CLIXML 파일은 다른 컴퓨터나 다른 사용자가 사용할 수 없습니다.

예제에서 자격 증명이 저장되는 파일은 .로 표시됩니다 TestScript.ps1.credential. TestScript를 자격 증명을 로드하는 스크립트의 이름으로 바꿉습니다.

자격 증명 개체를 파이프라인 Export-Clixml아래로 보내고 첫 번째 명령에서 지정한 경로 $Credxmlpath에 저장합니다.

자격 증명을 스크립트로 자동으로 가져오려면 마지막 두 명령을 실행합니다. 실행 Import-Clixml 하여 보안 자격 증명 개체를 스크립트로 가져옵니다. 이 가져오기를 사용하면 스크립트에서 일반 텍스트 암호를 노출할 위험이 없습니다.

예제 4: Linux 또는 macOS에서 자격 증명 개체 내보내기

이 예제에서는 cmdlet을 사용하여 변수에 $Credential PSCredentialGet-Credential 만듭니다. 그런 다음 자격 증명을 디스크에 저장하는 데 사용합니다 Export-Clixml .

Important

Export-Clixml 는 Windows에서 암호화된 자격 증명만 내보냅니다. macOS 및 Linux와 같은 비 Windows 운영 체제에서 자격 증명은 유니코드 문자 배열로 저장된 일반 텍스트로 내보내집니다. 이 경우 일부 난독 처리가 제공되지만 암호화는 제공하지 않습니다.

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

이 예제의 출력은 XML 파일의 Get-Content 자격 증명 정보에 집중하기 위해 잘렸습니다. 암호의 일반 텍스트 값은 XML 파일에 입증된 유니코드 문자 배열로 Format-Hex저장됩니다. 따라서 값은 인코딩되지만 암호화되지 않습니다.

매개 변수

-Confirm

cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.

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비트) 문자 집합의 인코딩을 사용합니다.
  • ansi: 현재 문화권의 ANSI 코드 페이지에 대한 인코딩을 사용합니다. 이 옵션은 7.4에 추가되었습니다.
  • bigendianunicode: big-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
  • bigendianutf32: big-endian 바이트 순서를 사용하여 UTF-32 형식으로 인코딩합니다.
  • oem: MS-DOS 및 콘솔 프로그램에 대한 기본 인코딩을 사용합니다.
  • unicode: little-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
  • utf7: UTF-7 형식으로 인코딩합니다.
  • utf8: UTF-8 형식으로 인코딩합니다.
  • utf8BOM: BOM(바이트 순서 표시)을 사용하여 UTF-8 형식으로 인코딩
  • utf8NoBOM: BOM(바이트 순서 표시)이 없는 UTF-8 형식으로 인코딩
  • utf32: UTF-32 형식으로 인코딩합니다.

PowerShell 6.2부터 인코딩 매개 변수는 등록된 코드 페이지(예: ) 또는 등록된 코드 페이지의 문자열 이름(예: -Encoding 1251-Encoding "windows-1251")의 숫자 ID도 허용합니다. 자세한 내용은 Encoding.CodePage에 대한 .NET 설명서를 참조하세요.

PowerShell 7.4부터 인코딩 매개 변수 값을 사용하여 Ansi 수동으로 지정하지 않고도 현재 문화권의 ANSI 코드 페이지에 대한 숫자 ID를 전달할 수 있습니다.

참고 항목

UTF-7*은 더 이상 사용하지 않는 것이 좋습니다. PowerShell 7.1을 기준으로 인코딩 매개 변수를 지정 utf7 하면 경고가 기록됩니다.

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

사용자 확인을 요청하지 않고 명령을 강제 실행합니다.

필요한 경우 cmdlet이 출력 파일의 읽기 전용 특성을 지우도록 합니다. 명령이 완료되면 cmdlet이 읽기 전용 특성을 다시 설정하려고 합니다.

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 매개 변수의 값은 입력된 대로 정확하게 사용됩니다. 어떤 문자도 야생으로 해석되지 카드. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-NoClobber

cmdlet이 기존 파일의 내용을 덮어쓰지 않음을 나타냅니다. 기본적으로 지정된 경로 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

cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

PSObject

이 cmdlet에 개체를 파이프라인할 수 있습니다.

출력

FileInfo

이 cmdlet은 저장된 데이터를 사용하여 만든 파일을 나타내는 FileInfo 개체를 반환합니다.