다음을 통해 공유


Export-PSSession

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

Syntax

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

Description

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

다른 PSSession에서 현재 세션으로 명령을 가져오는 것과 달리 Import-PSSession명령을 Export-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: 가져오기 및 설정 명령 내보내기

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

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

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

예제 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을 로컬 컴퓨터의 TestCmdlets 모듈로 내보냅니다.

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

cmdlet은 Get-Help 이름이 Test로 시작하는 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-PSSessionSessionOption 매개 변수와 함께 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-PSSessionOptionPSSessionOption 개체를 만들고 개체를 변수에 $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에 있는 인증서(Cert:) 드라이브에서 명령의 Get-Item 변형을 $S내보내려면 를 입력합니다 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을 사용합니다.

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

  • 별칭 현재 세션의 모든 PowerShell 별칭입니다.
  • 모두 모든 명령 유형입니다. 와 동일합니다 Get-Command -Name *.
  • 애플리케이션을 클릭합니다. 경로 환경 변수()에 나열된 경로의 PowerShell 파일을 제외한 모든 파일($env:path.txt, .exe 및 .dll 파일 포함).
  • Cmdlet. 현재 세션에 있는 cmdlet입니다. Cmdlet이 기본값입니다.
  • 구성 PowerShell 구성. 자세한 내용은 about_Session_Configurations 참조하세요.
  • ExternalScript. 경로 환경 변수($env:path)에 나열된 경로의 모든 .ps1 파일입니다.
  • 필터 및 함수입니다. 모든 PowerShell 함수.
  • 스크립트. 현재 세션에 있는 스크립트 블록입니다.
  • 워크플로: PowerShell 워크플로. 자세한 내용은 about_Workflows.
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

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

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

  • Ascii ASCII(7비트) 문자 집합을 사용합니다.
  • BigEndianUnicode big-endian 바이트 순서와 함께 UTF-16을 사용합니다.
  • 기본 시스템의 활성 코드 페이지에 해당하는 인코딩을 사용합니다.
  • Oem 시스템의 현재 OEM 코드 페이지에 해당하는 인코딩을 사용합니다.
  • 유니코드 little-endian 바이트 순서와 함께 UTF-16을 사용합니다.
  • UTF7 UTF-7을 사용합니다.
  • UTF8 UTF-8을 사용합니다.
  • UTF32 little-endian 바이트 순서와 함께 UTF-32를 사용합니다.
Type:String
Accepted values:ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32
Position:Named
Default value:UTF8
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-PSSessionSystem.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

ModuleSpecification 개체 형식으로 지정된 이름의 모듈을 지정합니다. ModuleSpecification 생성자(Hashtable)의 설명 섹션을 참조하세요.

예를 들어 FullyQualifiedModule 매개 변수는 다음 형식 중 하나로 지정된 모듈 이름을 허용합니다.

@{ModuleName = "modulename"; ModuleVersion = "version_number"}

@{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}

ModuleNameModuleVersion은 필수이지만 Guid는 선택 사항입니다. Module 매개 변수와 동일한 명령에서 FullyQualifiedModule 매개 변수를 지정할 수 없습니다. 두 매개 변수는 상호 배타적입니다.

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

-Module

지정된 PowerShell 스냅인 및 모듈의 명령만 내보냅니다. 스냅인 및 모듈 이름을 입력합니다. 와일드카드는 사용할 수 없습니다.

자세한 내용은 Import-Moduleabout_PSSnapins.

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

개체를 로 파이프할 Export-PSSession수 없습니다.

출력

FileInfo

Export-PSSession 는 만든 모듈을 구성하는 파일 목록을 반환합니다.

참고

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

를 사용하여 Export-PSSession PowerShell 공급자를 내보낼 수 없습니다.

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

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

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

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

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

내보낸 명령의 경우 사용자 인터페이스를 통해 메모장 등의 프로그램을 시작할 수 없다는 점을 포함하여 다른 원격 명령과 동일한 제한이 적용됩니다.

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

를 만드는 모듈에는 명령이 Export-PSSession 서식 데이터를 가져오지 않더라도 서식 파일이 포함될 수 있습니다. 명령이 형식 지정 데이터를 가져오지 않는 경우 만든 형식 지정 파일에 형식 지정 데이터가 포함되지 않습니다.