다음을 통해 공유


Export-PSSession

다른 세션에서 명령을 내보내고 PowerShell 모듈에 저장합니다.

Syntax

Export-PSSession
      [-OutputModule] <String>
      [-Force]
      [-Encoding <Encoding>]
      [[-CommandName] <String[]>]
      [-AllowClobber]
      [-ArgumentList <Object[]>]
      [-CommandType <CommandTypes>]
      [-Module <String[]>]
      [-FullyQualifiedModule <ModuleSpecification[]>]
      [[-FormatTypeName] <String[]>]
      [-Certificate <X509Certificate2>]
      [-Session] <PSSession>
      [<CommonParameters>]

Description

cmdlet은 Export-PSSession 로컬 또는 원격 컴퓨터의 다른 PowerShell 세션(PSSession)에서 cmdlet, 함수, 별칭 및 기타 명령 형식을 가져오고 PowerShell 모듈에 저장합니다. 모듈의 명령을 현재 세션에 추가하려면 cmdlet을 Import-Module 사용합니다.

다른 PSSession에서 현재 세션으로 명령을 가져오는 것과 달리 Import-PSSessionExport-PSSession 듈에 명령을 저장합니다. 명령은 현재 세션으로 가져오지 않습니다.

명령을 내보내려면 cmdlet을 New-PSSession 사용하여 내보낼 명령이 있는 PSSession을 만듭니다. 그런 다음 cmdlet을 Export-PSSession 사용하여 명령을 내보냅니다.

명령 이름 충돌을 방지하기 위해 기본값은 현재 세션에 Export-PSSession 있는 명령을 제외한 모든 명령을 내보내는 것입니다. CommandName 매개 변수를 사용하여 내보낼 명령을 지정할 수 있습니다.

이 cmdlet은 Export-PSSession PowerShell의 암시적 원격 기능을 사용합니다. 현재 세션으로 명령을 가져오면 원래 세션 또는 원래 컴퓨터의 유사한 세션에서 암시적으로 실행됩니다.

예제

예제 1: PSSession에서 명령 내보내기

이 예제에서는 로컬 컴퓨터에서 Server01 컴퓨터로 새 PSSession을 만듭니다. 현재 세션에 있는 명령을 제외한 모든 명령은 로컬 컴퓨터의 Server01이라는 모듈로 내보내집니다. 내보내기 명령에 대한 서식 지정 데이터가 포함됩니다.

$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01

New-PSSession 명령은 Server01 컴퓨터에 PSSession을 만듭니다. PSSession은 변수에 $S 저장됩니다. 이 Export-PSSession 명령은 변수의 명령과 서식 데이터를 Server01 모듈로 내 $S 보냅니다.

예제 2: 가져오기 및 설정 명령 내보내기

이 예제에서는 서버에서 모든 Get 명령과 Set 명령을 내보냅니다.

$S = New-PSSession -ConnectionUri https://exchange.microsoft.com/mailbox -Credential exchangeadmin01@hotmail.com -Authentication Negotiate
Export-PSSession -Session $S -Module exch* -CommandName Get-*, Set-* -FormatTypeName * -OutputModule $PSHOME\Modules\Exchange -Encoding ASCII

이러한 명령은 원격 컴퓨터의 GetSet Microsoft Exchange Server 스냅인에서 로컬 컴퓨터의 디렉터리에 있는 $PSHOME\Modules Exchange 모듈로 및 명령을 내보냅니다. 모듈을 $PSHOME\Modules 디렉터리에 배치하면 컴퓨터의 모든 사용자가 액세스할 수 있습니다.

예제 3: 원격 컴퓨터에서 명령 내보내기

다음은 원격 컴퓨터의 PSSession에서 cmdlet을 내보내 로컬 컴퓨터의 모듈에 저장하는 예제입니다. 모듈의 cmdlet은 사용할 수 있도록 현재 세션에 추가됩니다.

$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type Cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files

New-PSSession 명령은 Server01 컴퓨터에 PSSession을 만들고 변수에 $S 저장합니다. 이 Export-PSSession 명령은 이름이 PSSession $S 에서 Test로 시작하는 cmdlet을 로컬 컴퓨터의 TestCmdlet 모듈로 내보냅니다.

cmdlet은 Remove-PSSession 현재 세션에서 PSSession $S 을 삭제합니다. 이 명령은 세션에서 가져온 명령을 사용하기 위해 PSSession이 활성 상태일 필요가 없음을 보여 줍니다. cmdlet은 Import-Module TestCmdlet 모듈의 cmdlet을 현재 세션에 추가합니다. 명령은 언제든지 모든 세션에서 실행할 수 있습니다.

cmdlet은 Get-Help 이름이 Test로 시작하는 cmdlet에 대한 도움말을 가져옵니다. 모듈의 명령이 현재 세션에 추가된 후에는 cmdlet 및 Get-Command cmdlet을 사용하여 Get-Help 가져온 명령에 대해 알아볼 수 있습니다. 이 cmdlet은 Test-Files Server01 컴퓨터에서 내보내고 세션에 추가되었습니다. cmdlet은 Test-Files 명령을 가져온 컴퓨터의 원격 세션에서 실행됩니다. PowerShell은 TestCmdlets 모듈에 저장된 정보에서 세션을 만듭니다.

예제 4: 현재 세션에서 명령 내보내기 및 복제

다음은 변수에 저장된 명령을 현재 세션으로 내보내는 예제입니다.

Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands

Export-PSSession 명령은 변수의 PSSession $S 에서 모든 명령 및 모든 서식 데이터를 현재 세션으로 내보냅니다. AllowClobber 매개 변수에는 현재 세션의 명령과 이름이 같은 명령이 포함됩니다.

예제 5: 닫힌 PSSession에서 명령 내보내기

이 예제에서는 내보낸 명령을 만든 PSSession이 닫혀 있을 때 특수 옵션을 사용하여 내보낸 명령을 실행하는 방법을 보여 줍니다.

모듈을 가져올 때 원래 원격 세션이 닫힌 경우 모듈은 원래 컴퓨터에 연결하는 열린 원격 세션을 사용합니다. 원래 컴퓨터에 대한 현재 세션이 없으면 모듈이 세션을 다시 설정합니다.

원격 세션에서 특수 옵션을 사용하여 내보낸 명령을 실행하려면 모듈을 가져오기 전에 해당 옵션을 사용하여 원격 세션을 만들어야 합니다. New-PSSession SessionOption 매개 변수와 함께 cmdlet 사용

$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName Server01 -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName Server01 -SessionOption $Options
Import-Module Server01

cmdlet은 New-PSSessionOption PSSessionOption 개체를 만들고 변수에 개체를 $Options 저장합니다. 이 New-PSSession 명령은 Server01 컴퓨터에 PSSession을 만듭니다. SessionOption 매개 변수는 에 저장된 개체를 $Options사용합니다. 세션은 변수에 $S 저장됩니다.

cmdlet은 Export-PSSession PSSession $S 에서 Server01 모듈로 명령을 내보냅니다. cmdlet은 Remove-PSSession 변수에서 PSSession을 $S 삭제합니다.

이 cmdlet은 New-PSSession Server01 컴퓨터에 연결하는 새 PSSession을 만듭니다. SessionOption 매개 변수는 에 저장된 개체를 $Options사용합니다. cmdlet은 Import-Module Server01 모듈에서 명령을 가져옵니다. 모듈의 명령은 Server01 컴퓨터의 PSSession에서 실행됩니다.

매개 변수

-AllowClobber

지정된 명령이 현재 세션의 명령과 이름이 같더라도 내보냅니다.

현재 세션에서 명령과 이름이 같은 명령을 내보내면 내보낸 명령이 원래 명령을 숨기거나 바꿉니다. 자세한 내용은 about_Command_Precedence를 참조하세요.

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

-ArgumentList

지정된 인수(매개 변수 값)를 사용하여 생성된 명령의 변형을 내보냅니다.

예를 들어 PSSession$S의 인증서(Cert:) 드라이브에서 명령의 Get-Item 변형을 내보내려면 다음을 입력합니다Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:.

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Certificate

서식 파일(*)에 서명하는 데 사용되는 클라이언트 인증서를 지정합니다. 만드는 모듈의 Format.ps1xml 또는 스크립트 모듈 Export-PSSession 파일(.psm1)입니다. 인증서가 포함된 변수를 입력하거나 인증서를 가져오는 명령 또는 식을 입력합니다.

인증서를 찾으려면 cmdlet을 Get-PfxCertificate 사용하거나 인증서(Cert:) 드라이브에서 cmdlet을 사용합니다 Get-ChildItem . 인증서가 유효하지 않거나 권한이 충분하지 않으면 명령이 실패합니다.

Type:X509Certificate2
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CommandName

지정한 이름 또는 이름 패턴을 가진 명령만 내보냅니다. 야생카드 허용됩니다. CommandName 또는 해당 별칭인 Name을 사용합니다.

기본적으로 Export-PSSession PSSession에서 현재 세션의 명령과 이름이 같은 명령을 제외한 모든 명령을 내보냅니다. 이렇게 하면 명령이 숨겨지거나 현재 세션의 명령으로 대체되지 않습니다. 모든 명령을 내보내려면 다른 명령을 숨기거나 바꾸는 명령도 AllowClobber 매개 변수를 사용합니다.

CommandName 매개 변수를 사용하는 경우 FormatTypeName 매개 변수를 사용하지 않는 한 명령에 대한 서식 파일을 내보내지 않습니다. 마찬가지로 FormatTypeName 매개 변수를 사용하는 경우 CommandName 매개 변수를 사용하지 않는 한 명령을 내보내지 않습니다.

Type:String[]
Aliases:Name
Position:2
Default value:All commands in the session.
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-CommandType

지정된 형식의 명령 개체만 내보냅니다. CommandType 또는 해당 별칭인 Type을 사용합니다.

이 매개 변수에 허용되는 값은 다음과 같습니다.

  • Alias: 현재 세션의 모든 PowerShell 별칭입니다.
  • All: 모든 명령 유형입니다. 이 값은 .에 해당합니다 Get-Command -Name *.
  • Application: .txt, .exe 및 .dll 파일을 포함하여 경로 환경 변수($env:path)에 나열된 경로의 PowerShell 파일을 제외한 모든 파일입니다.
  • Cmdlet: 현재 세션의 cmdlet입니다. Cmdlet이 기본값입니다.
  • Configuration: PowerShell 구성입니다. 자세한 내용은 about_Session_Configurations 참조하세요.
  • ExternalScript: 경로 환경 변수($env:path)에 나열된 경로의 모든 .ps1 파일입니다.
  • FilterFunction: 모든 PowerShell 함수입니다.
  • Script 현재 세션의 스크립트 블록입니다.
  • Workflow PowerShell 워크플로입니다. 자세한 내용은 about_Workflows 참조하세요.

이러한 값은 플래그 기반 열거형으로 정의됩니다. 이 매개 변수를 사용하여 여러 값을 결합하여 여러 플래그를 설정할 수 있습니다. 값은 CommandType 매개 변수에 값 배열 또는 해당 값의 쉼표로 구분된 문자열로 전달될 수 있습니다. cmdlet은 이진 OR 연산을 사용하여 값을 결합합니다. 값을 배열로 전달하는 것이 가장 간단한 옵션이며 값에 대한 탭 완성을 사용할 수도 있습니다.

Type:CommandTypes
Aliases:Type
Accepted values:Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow
Position:Named
Default value:All commands in the session.
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

대상 파일의 인코딩 형식을 지정합니다. 기본값은 utf8NoBOM입니다.

이 매개 변수에 허용되는 값은 다음과 같습니다.

  • ascii: ASCII(7비트) 문자 집합의 인코딩을 사용합니다.
  • ansi: 현재 문화권의 ANSI 코드 페이지에 대한 인코딩을 사용합니다. 이 옵션은 PowerShell 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

파일에 읽기 전용 특성이 있더라도 하나 이상의 기존 출력 파일을 덮어씁니다.

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

-FormatTypeName

지정한 Microsoft .NET Framework 유형에 대한 형식 지정 명령만 내보냅니다. 형식 이름을 입력합니다. 기본적으로 Export-PSSession System.Management.Automation 네임스페이스에 없는 모든 .NET Framework 형식에 대한 서식 지정 지침을 내보냅니다.

이 매개 변수의 값은 명령을 가져오는 세션의 명령에서 반환 Get-FormatData 되는 형식의 이름이어야 합니다. 원격 세션에서 모든 서식 데이터를 얻으려면 .를 입력합니다 *.

FormatTypeName 매개 변수를 사용하는 경우 CommandName 매개 변수를 사용하지 않는 한 명령을 내보내지 않습니다.

CommandName 매개 변수를 사용하는 경우 FormatTypeName 매개 변수를 사용하지 않는 한 명령에 대한 서식 파일을 내보내지 않습니다.

Type:String[]
Position:3
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FullyQualifiedModule

값은 모듈 이름, 전체 모듈 사양 또는 모듈 파일 경로일 수 있습니다.

값이 경로인 경우 경로는 정규화되거나 상대적일 수 있습니다. 상대 경로는 using 문을 포함하는 스크립트를 기준으로 확인됩니다.

값이 이름 또는 모듈 사양인 경우 PowerShell은 PSModulePath에서 지정된 모듈을 검색합니다.

모듈 사양은 다음 키가 있는 해시 테이블입니다.

  • ModuleName - 필수 모듈 이름을 지정합니다.
  • GUID - 선택 사항 모듈의 GUID를 지정합니다.
  • 또한 아래 세 가지 키 중 하나 이상을 지정해야 합니다 .
    • ModuleVersion - 모듈의 허용 가능한 최소 버전을 지정합니다.
    • MaximumVersion - 모듈의 허용되는 최대 버전을 지정합니다.
    • RequiredVersion - 모듈의 정확한 필수 버전을 지정합니다. 다른 버전 키에는 사용할 수 없습니다.

Module 매개 변수와 동일한 명령에는 FullyQualifiedModule 매개 변수를 지정할 수 없습니다. 두 매개 변수는 상호 배타적입니다.

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Module

지정된 PowerShell 스냅인 및 모듈의 명령만 내보냅니다. 스냅인 및 모듈 이름을 입력합니다. 야생카드 허용되지 않습니다.

자세한 내용은 about_PSSnapins Import-Module참조하세요.

Type:String[]
Aliases:PSSnapin
Position:Named
Default value:All commands in the session.
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputModule

에서 만든 Export-PSSession모듈의 선택적 경로 및 이름을 지정합니다. 기본 경로는 $HOME\Documents\WindowsPowerShell\Modules입니다. 이 매개 변수는 필수입니다.

모듈 하위 디렉터리 또는 이미 만든 파일이 Export-PSSession 있으면 명령이 실패합니다. 기존 파일을 덮어쓰려면 Force 매개 변수를 사용합니다.

Type:String
Aliases:PSPath, ModuleName
Position:1
Default value:$HOME\Documents\WindowsPowerShell\Modules
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Session

명령을 내보낼 원본 PSSession을 지정합니다. 세션 개체 또는 명령과 같은 세션 개체를 가져오는 명령이 포함된 변수를 Get-PSSession 입력합니다. 이 매개 변수는 필수입니다.

Type:PSSession
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

입력

None

개체를 이 cmdlet으로 파이프할 수 없습니다.

출력

FileInfo

이 cmdlet은 만든 모듈을 구성하는 파일 목록을 반환합니다.

참고

Export-PSSession 는 PowerShell 원격 인프라를 사용합니다. 이 cmdlet을 사용하려면 컴퓨터를 원격으로 구성해야 합니다. 자세한 내용은 about_Remote_Requirements 참조하세요.

PowerShell 공급자를 내보내는 데 사용할 Export-PSSession 수 없습니다.

내보낸 명령은 내보낸 PSSession에서 암시적으로 실행됩니다. 명령을 원격으로 실행하는 세부 정보는 PowerShell에서 전적으로 처리됩니다. 로컬 명령을 실행하는 것처럼 내보낸 명령을 실행할 수 있습니다.

Export-ModuleMember 는 내보내는 모듈에서 PSSession에 대한 정보를 캡처하고 저장합니다. 모듈을 가져올 때 명령을 내보낸 PSSession이 닫히고 동일한 컴퓨터로의 활성 PSSession이 없으면 모듈의 명령이 PSSession을 다시 만들려고 시도합니다. PSSession을 다시 만들려는 시도가 실패하면 내보낸 명령이 실행되지 않습니다.

모듈에서 캡처하고 저장하는 세션 정보에 Export-ModuleMember 는 기본 설정 변수 또는 cmdlet의 New-PSSessionEnter-PSSessionInvoke-Command SessionOption 매개 변수를 사용하여 지정 $PSSessionOption 하는 것과 같은 세션 옵션이 포함되지 않습니다. 모듈을 가져올 때 원본 PSSession이 닫혀 있을 경우 모듈은 동일한 컴퓨터에 대한 다른 PSSession을 사용합니다(사용 가능한 경우). 가져온 명령이 올바르게 구성된 세션에서 실행되도록 설정하려면 모듈을 가져오기 전에 원하는 옵션을 사용하여 PSSession을 만듭니다.

내보낼 Export-PSSession 명령을 찾으려면 cmdlet을 Invoke-Command 사용하여 PSSession에서 명령을 실행 Get-Command 합니다. 명령에 대한 서식 데이터를 가져와 저장하기 위해 및 Export-FormatData cmdlet을 Get-FormatData 사용합니다. 명령을 실행할 Export-PSSession 때 , Get-Command, Get-FormatDataExport-FormatData 오류 Invoke-Command메시지가 표시될 수 있습니다. Export-PSSession 또한 , Get-FormatData, Select-ObjectGet-Help cmdlet을 포함하지 Get-Command않는 세션에서 명령을 내보낼 수 없습니다.

Export-PSSessionWrite-Progress cmdlet을 사용하여 명령의 진행률을 표시합니다. 명령이 실행되는 동안 진행률 표시줄을 확인할 수 있습니다.

내보낸 명령은 메모장 같은 사용자 인터페이스로 프로그램을 시작할 수 없음을 포함하여 다른 원격 명령과 동일한 제한 사항이 있습니다.

PowerShell 프로필은 PSSessions에서 실행되지 않으므로 프로필이 세션에 추가하는 명령은 사용할 수 Export-PSSession없습니다. 프로필에서 명령을 내보내려면 명령을 내보내기 전에 명령을 사용하여 Invoke-Command PSSession에서 프로필을 수동으로 실행합니다.

만드는 모듈에는 명령이 Export-PSSession 서식 데이터를 가져오지 않더라도 서식 파일이 포함될 수 있습니다. 명령이 서식 데이터를 가져오지 않으면 생성된 서식 파일에는 서식 데이터가 포함되지 않습니다.