Export-PSSession
다른 세션에서 명령을 가져온 다음 Windows PowerShell 모듈에 저장합니다.
구문
Export-PSSession [-Session] <PSSession> [-OutputModule] <string> [[-CommandName] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentList <Object[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [-Encoding <string>] [-Force] [-Module <string[]>] [<CommonParameters>]
설명
Export-PSSession cmdlet은 로컬 또는 원격 컴퓨터의 다른 PSSession에서 cmdlet, 함수, 별칭 및 기타 명령 유형을 가져온 다음 Windows PowerShell 모듈에 저장합니다. 모듈의 명령을 현재 세션에 추가하려면 Import-Module cmdlet을 사용하십시오.
다른 PSSession의 명령을 현재 세션으로 가져오는 Import-PSSession과는 달리 Export-PSSession은 명령을 모듈에 저장하고 현재 세션으로 가져오지는 않습니다.
명령을 내보내려면 먼저 New-PSSession cmdlet을 사용하여 내보낼 명령이 있는 PSSession을 만듭니다. 그런 다음 Export-PSSession cmdlet을 사용하여 명령을 내보냅니다. Export-PSSession은 기본적으로 현재 세션에 있는 명령을 제외한 모든 명령을 내보내지만 CommandName 매개 변수를 사용하여 내보낼 명령을 지정할 수도 있습니다.
Export-PSSession cmdlet은 Windows PowerShell의 암시적 원격 기능을 사용합니다. 명령을 현재 세션으로 가져오면 원래 세션 또는 원래 컴퓨터에 있는 유사한 세션에서 암시적으로 실행됩니다.
매개 변수
-AllowClobber
현재 세션의 명령과 이름이 같은 경우에도 지정한 명령을 내보냅니다.
현재 세션의 명령과 같은 이름의 명령을 가져오면 가져온 명령이 원래 명령을 숨기거나 바꿉니다. 자세한 내용은 about_Command_Precedence를 참조하십시오.
Export-PSSession은 현재 세션에 있는 명령과 이름이 같은 명령을 가져오지 않습니다. 기본적으로 명령 이름이 충돌하지 않도록 설계되었습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
False |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-ArgumentList <Object[]>
지정된 인수(매개 변수 값)를 사용한 결과 생성된 명령의 변형을 내보냅니다.
예를 들어 인증서(Cert:) 드라이브에 있는 Get-Item 명령의 변형을 $s의 PSSession으로 내보내려면 "export-pssession -session $s -command Get-Item -argumentlist cert:"를 입력합니다.
필수 여부 |
false |
위치 |
named |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-CommandName <string[]>
지정된 이름이나 이름 패턴을 가진 명령만 내보냅니다. 와일드카드를 사용할 수 있습니다. "CommandName" 또는 해당 별칭인 "Name"을 사용합니다.
기본적으로 Export-PSSession은 현재 세션에 있는 명령과 이름이 같은 명령을 제외한 모든 명령을 PSSession에서 내보냅니다. 따라서 가져온 명령이 현재 세션의 명령을 숨기거나 바꾸지 않습니다. 다른 명령을 숨기거나 바꾸는 명령을 포함하여 모든 명령을 내보내려면 AllowClobber 매개 변수를 사용하십시오.
CommandName 매개 변수를 사용하는 경우 FormatTypeName 매개 변수를 사용하지 않는 한 명령에 대한 형식 지정 파일을 내보내지 않습니다. 마찬가지로 FormatTypeName 매개 변수를 사용하는 경우에는 CommandName 매개 변수를 사용하지 않는 한 어떠한 명령도 내보내지 않습니다.
필수 여부 |
false |
위치 |
3 |
기본값 |
세션의 모든 명령 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
true |
-CommandType <CommandTypes>
지정된 유형의 명령 개체만 내보냅니다. "CommandType" 또는 해당 별칭인 "Type"을 사용합니다.
유효한 값은 다음과 같습니다.
-- Alias: 현재 세션에 있는 모든 Windows PowerShell 별칭
-- All: 모든 명령 유형. "Get-Command *"와 동일합니다.
-- Application: Path 환경 변수($env:path)에 나열된 경로에 있는 Windows PowerShell 파일이 아닌 모든 파일로, .txt, .exe 및 .dll 파일을 포함합니다.
-- Cmdlet: 현재 세션에 있는 cmdlet. 기본값은 "Cmdlet"입니다.
-- ExternalScript: Path 환경 변수($env:path)에 나열된 경로에 있는 모든 .ps1 파일
-- Filter 및 Function: 모든 Windows PowerShell 함수
-- Script: 현재 세션에 있는 스크립트 블록
필수 여부 |
false |
위치 |
named |
기본값 |
세션의 모든 명령 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Encoding <string>
출력 파일의 인코딩을 지정합니다. 유효한 값은 "Unicode", "UTF7", "UTF8", "ASCII", "UTF32", "BigEndianUnicode", "Default" 및 "OEM"입니다. 기본값은 "UTF-8"입니다.
필수 여부 |
false |
위치 |
named |
기본값 |
UTF-8 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Force
파일에 읽기 전용 특성이 있는 경우에도 하나 이상의 기존 출력 파일을 덮어씁니다.
필수 여부 |
false |
위치 |
named |
기본값 |
False |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-FormatTypeName <string[]>
지정한 Microsoft .NET Framework 유형에 대한 형식 지정 명령만 내보냅니다. 유형 이름을 입력합니다. 기본적으로 Export-PSSession은 System.Management.Automation 네임스페이스에 없는 모든 .NET Framework 유형에 대한 형식 지정 명령을 내보냅니다.
이 매개 변수의 값은 명령을 가져올 세션의 Get-FormatData 명령에서 반환된 유형의 이름이어야 합니다. 원격 세션의 모든 형식 지정 데이터를 가져오려면 *를 입력하십시오.
FormatTypeName 매개 변수를 사용하는 경우 CommandName 매개 변수를 사용하지 않는 한 어떠한 명령도 내보내지 않습니다.
마찬가지로 CommandName 매개 변수를 사용하는 경우에는 FormatTypeName 매개 변수를 사용하지 않는 한 명령에 대한 형식 지정 파일을 내보내지 않습니다.
필수 여부 |
false |
위치 |
4 |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Module <string[]>
지정된 Windows PowerShell 스냅인과 모듈의 명령만 내보냅니다. 스냅인 및 모듈 이름을 입력합니다. 와일드카드는 사용할 수 없습니다.
자세한 내용은 about_Pssnapins 및 Import-Module을 참조하십시오.
필수 여부 |
false |
위치 |
named |
기본값 |
세션의 모든 명령 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-OutputModule <string>
Export-PSSession이 만드는 모듈의 경로(선택 사항)와 이름을 지정합니다. 기본 경로는 $home\Documents\WindowsPowerShell\Modules입니다. 이 매개 변수는 필수 사항입니다.
Export-PSSession이 만드는 파일이나 모듈 하위 디렉터리가 이미 있는 경우 명령이 실패합니다. 기존 파일을 덮어쓰려면 Force 매개 변수를 사용하십시오.
필수 여부 |
true |
위치 |
2 |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Session <PSSession>
명령을 내보낼 PSSession을 지정합니다. 세션 개체가 포함된 변수를 입력하거나 세션 개체를 가져오는 명령(예: Get-PSSession 명령)을 입력합니다. 이 매개 변수는 필수 사항입니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
없음 Export-PSSession으로 개체를 파이프할 수 없습니다. |
출력 |
System.IO.FileInfo Export-PSSession은 만들어진 모듈을 구성하는 파일 목록을 반환합니다. |
참고
Export-PSSession은 Windows PowerShell 원격 인프라를 사용합니다. 이 cmdlet을 사용하려면 원격 기능을 사용하도록 컴퓨터를 구성해야 합니다. 자세한 내용은 about_Remote_Requirements를 참조하십시오.
Export-PSSession을 사용하여 Windows PowerShell 공급자를 내보낼 수 없습니다.
내보낸 명령은 내보낸 PSSession에서 암시적으로 실행됩니다. 그러나 명령의 원격 실행은 전적으로 Windows PowerShell에서 처리됩니다. 내보낸 명령은 로컬 명령을 실행하는 것처럼 실행할 수 있습니다.
Export-Module은 내보내는 모듈의 PSSession에 대한 정보를 캡처하여 저장합니다. 모듈을 가져올 때 명령을 내보낸 PSSession이 닫혀 있고 동일한 컴퓨터에 활성 중인 PSSession이 없으면 모듈의 명령이 PSSession을 다시 만들려고 시도합니다. PSSession을 다시 만드는 데 실패하면 내보낸 명령이 실행되지 않습니다.
Export-Module이 캡처하여 모듈에 저장하는 세션 정보에는 $PSSessionOption 자동 변수에서 지정하거나 New-PSSession, Enter-PSSession 또는 Invoke-Command cmdlet의 SessionOption 매개 변수를 사용하여 지정한 것과 같은 세션 옵션이 포함되지 않습니다. 모듈을 가져올 때 원래의 PSSession이 닫혀 있으면 모듈은 동일한 컴퓨터의 다른 PSSession(있는 경우)을 사용합니다. 가져온 명령이 올바로 구성된 세션에서 실행되도록 하려면 모듈을 가져오기 전에 원하는 옵션으로 PSSession을 만드십시오.
내보낼 명령을 찾기 위해 Export-PSSession은 Invoke-Command cmdlet을 사용하여 PSSession에서 Get-Command 명령을 실행합니다. 또한 명령에 대한 형식 지정 데이터를 가져와 저장하기 위해 Get-FormatData 및 Export-FormatData cmdlet을 사용합니다. Export-PSSession 명령을 실행할 때 Invoke-Command, Get-Command, Get-FormatData 및 Export-FormatData에서 오류 메시지가 표시될 수 있습니다. 또한 Export-PSSession은 Get-Command, Get-FormatData 및 Select-Object 및 Get-Help cmdlet을 포함하지 않는 세션에서는 명령을 내보낼 수 없습니다.
Export-PSSession은 Write-Progress cmdlet을 사용하여 명령 진행률을 표시합니다. 명령이 실행되는 동안 진행률 표시줄을 확인할 수 있습니다.
내보낸 명령의 경우 사용자 인터페이스를 통해 메모장 등의 프로그램을 시작할 수 없다는 점을 포함하여 다른 원격 명령과 동일한 제한이 적용됩니다.
Windows PowerShell 프로필은 PSSession에서 실행되지 않으므로 Export-PSSession은 프로필이 세션을 추가하는 명령을 사용할 수 없습니다. 프로필에서 명령을 내보내려면 명령을 내보내기 전에 Invoke-Command 명령을 사용하여 PSSession에서 프로필을 수동으로 실행하십시오.
명령이 형식 지정 데이터를 가져오지 않는 경우에도 Export-PSSession이 만드는 모듈에 형식 지정 파일이 포함될 수 있습니다. 명령이 형식 지정 데이터를 가져오지 않으면 만들어진 모든 형식 지정 파일에 형식 지정 데이터가 포함되지 않습니다.
예 1
C:\PS>$s = new-pssession -computerName Server01
C:\PS> export-pssession -session $s -outputModule Server01
설명
-----------
이 예의 명령은 현재 세션에 있는 명령과 이름이 같은 명령을 제외하고 Server01 컴퓨터의 PSSession에 있는 모든 명령을 로컬 컴퓨터의 Sever01 모듈로 내보냅니다. 또한 명령에 대한 형식 지정 데이터도 내보냅니다.
첫 번째 명령은 Server01 컴퓨터에 PSSession을 만듭니다. 두 번째 명령은 세션의 명령과 형식 지정 데이터를 Server01 모듈로 내보냅니다.
예 2
C:\PS>$s = new-pssession -ConnectionUri http://exchange.microsoft.com/mailbox -credential exchangeadmin01@hotmail.com -authentication negotiate
C:\PS> export-pssession -session $r -module exch* -commandname get-*, set-* -formattypename * -outputModule $pshome\Modules\Exchange -encoding ASCII
설명
-----------
이들 명령은 원격 컴퓨터의 Microsoft Exchange Server 스냅인에서 Get 및 Set 명령을 로컬 컴퓨터의 $pshome\Modules 디렉터리에 있는 Exchange 모듈로 내보냅니다.
모듈을 $pshome\Module 디렉터리에 배치하면 컴퓨터의 모든 사용자가 액세스할 수 있게 됩니다.
예 3
C:\PS>$s = new-pssession -computerName Server01 -credential Server01\User01
C:\PS> export-pssession -session $s -outputModule TestCmdlets -type cmdlet -commandname *test* -formattypename *
C:\PS> remove-pssession $s
C:\PS> import-module TestCmdlets
C:\PS> get-help test*
C:\PS> test-files
설명
-----------
이들 명령은 원격 컴퓨터의 PSSession에서 cmdlet을 내보내서 로컬 컴퓨터의 모듈에 저장합니다. 그런 다음 해당 cmdlet을 모듈에서 현재 세션으로 추가하여 사용할 수 있도록 합니다.
첫 번째 명령은 Server01 컴퓨터에 PSSession을 만든 다음 $s 변수에 저장합니다.
두 번째 명령은 $s의 PSSession에서 이름이 "Test"로 시작하는 cmdlet을 로컬 컴퓨터의 TestCmdlets 모듈로 내보냅니다.
세 번째 명령은 Remove-PSSession cmdlet을 사용하여 $s에 있는 PSSession을 현재 세션에서 삭제합니다. 이 명령은 PSSession이 활성화되지 않아도 해당 PSSession에서 가져온 명령을 사용할 수 있음을 보여 줍니다.
언제 어떤 세션에서도 실행할 수 있는 네 번째 명령은 Import-Module cmdlet을 사용하여 TestCmdlets 모듈에 있는 cmdlet을 현재 세션에 추가합니다.
다섯 번째 명령은 Get-Help cmdlet을 사용하여 이름이 "Test"로 시작하는 cmdlet에 대한 도움말을 가져옵니다. 모듈의 명령이 현재 세션에 추가되면 세션의 다른 명령에 대해 사용하는 것과 마찬가지로 Get-Help 및 Get-Command cmdlet을 사용하여 가져온 명령에 대해 자세하게 알아볼 수 있습니다.
여섯 번째 명령은 Server01 컴퓨터에서 내보내서 세션에 추가된 Test-Files cmdlet을 사용합니다.
명확히 구분되지는 않지만 Test-Files 명령은 실제로는 명령을 가져온 컴퓨터의 원격 세션에서 실행됩니다. Windows PowerShell은 모듈에 저장된 정보에서 세션을 만듭니다.
예 4
C:\PS>export-pssession -session $s -AllowClobber -outputModule AllCommands
설명
-----------
이 명령은 $s 변수의 PSSession에서 모든 명령과 모든 형식 지정 데이터를 현재 세션으로 내보냅니다. 이 명령은 AllowClobber 매개 변수를 사용하여 현재 세션의 명령과 동일한 이름의 명령을 포함합니다.
예 5
C:\PS>$options = New-PSSessionOption -NoMachineProfile
C:\PS> $s = new-pssession -computername Server01 -sessionoption $options
C:\PS> export-pssession -session $s -outputModule Server01
C:\PS> remove-pssession $s
C:\PS> new-pssession -computername Server01 -sessionoption $options
C:\PS> import-module Server01
설명
-----------
이 예에서는 명령을 내보낸 PSSession이 닫혀 있는 경우 특정 옵션을 사용하여 세션에서 내보낸 명령을 실행하는 방법을 보여 줍니다.
Export-PSSession을 사용하면 원래 PSSession에 대한 정보가 이 cmdlet이 만드는 모듈에 저장됩니다. 원래 원격 세션이 닫혀 있는 경우 모듈을 가져오면 해당 모듈은 원래 컴퓨터에 연결된 열려 있는 임의의 원격 세션을 사용합니다.
현재 세션에 원래 컴퓨터에 대한 원격 세션이 포함되어 있지 않으면 모듈의 명령은 해당 컴퓨터에 대한 세션을 다시 설정합니다. 그러나 Export-PSSession은 New-PSSession의 SessionOption 매개 변수를 사용하여 설정한 옵션과 같이 특수한 옵션을 모듈에 저장하지 않습니다.
따라서 특정 옵션을 사용하여 원격 세션에서 내보낸 명령을 실행하려면 모듈을 가져오기 전에 원하는 옵션을 사용하여 원격 세션을 만들어야 합니다.
첫 번째 명령은 New-PSSessionOption cmdlet을 사용하여 PSSessionOption 개체를 만들고 이 개체를 $options 변수에 저장합니다.
두 번째 명령은 지정한 옵션을 포함하는 PSSession을 만듭니다. 이 명령은 New-PSSession cmdlet을 사용하여 Server01 컴퓨터에서 PSSession을 만들고 SessionOption 매개 변수를 사용하여 $options의 옵션 개체를 전송합니다.
세 번째 명령은 Export-PSSession cmdlet을 사용하여 $s의 PSSession에서 명령을 Server01 모듈로 내보냅니다.
네 번째 명령은 Remove-PSSession cmdlet을 사용하여 $s 변수에서 PSSession을 삭제합니다.
다섯 번째 명령은 New-PSSession cmdlet을 사용하여 Server01 컴퓨터에 연결된 새 PSSession을 만듭니다. 또한 이 PSSession은 $options 변수의 세션 옵션을 사용합니다.
여섯 번째 명령은 Import-Module cmdlet을 사용하여 Server01 모듈에서 명령을 가져옵니다. 이 모듈의 명령은 Server01 컴퓨터의 PSSession에서 실행됩니다.
참고 항목
개념
about_Command_Precedence
Import-PSSession
New-PSSession
Import-Module
Invoke-Command
about_PSSessions