다음을 통해 공유


Import-Module

현재 세션에 모듈을 추가합니다.

구문

Import-Module
      [-Global]
      [-Prefix <String>]
      [-Name] <String[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-MinimumVersion <Version>]
      [-MaximumVersion <String>]
      [-RequiredVersion <Version>]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-Name] <String[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-MinimumVersion <Version>]
      [-MaximumVersion <String>]
      [-RequiredVersion <Version>]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      -PSSession <PSSession>
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-Name] <String[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-MinimumVersion <Version>]
      [-MaximumVersion <String>]
      [-RequiredVersion <Version>]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      -CimSession <CimSession>
      [-CimResourceUri <Uri>]
      [-CimNamespace <String>]
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-FullyQualifiedName] <ModuleSpecification[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-FullyQualifiedName] <ModuleSpecification[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      -PSSession <PSSession>
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-Assembly] <Assembly[]>
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      [<CommonParameters>]
Import-Module
      [-Global]
      [-Prefix <String>]
      [-Function <String[]>]
      [-Cmdlet <String[]>]
      [-Variable <String[]>]
      [-Alias <String[]>]
      [-Force]
      [-PassThru]
      [-AsCustomObject]
      [-ModuleInfo] <PSModuleInfo[]>
      [-ArgumentList <Object[]>]
      [-DisableNameChecking]
      [-NoClobber]
      [-Scope <String>]
      [<CommonParameters>]

Description

Import-Module cmdlet은 현재 세션에 하나 이상의 모듈을 추가합니다. 가져오는 모듈은 로컬 컴퓨터 또는 원격 컴퓨터에 설치해야 합니다.

PowerShell 3.0부터 설치된 모듈은 모듈의 명령 또는 공급자를 사용할 때 자동으로 세션으로 가져옵니다. 그러나 Import-Module 명령을 사용하여 모듈을 가져올 수 있으며 $PSModuleAutoloadingPreference 기본 설정 변수를 사용하여 자동 모듈 가져오기를 사용하거나 사용하지 않도록 설정할 수 있습니다. 모듈에 대한 자세한 내용은 about_Modules참조하세요. $PSModuleAutoloadingPreference 변수에 대한 자세한 내용은 about_Preference_Variables참조하세요.

모듈은 PowerShell에서 사용할 수 있는 멤버를 포함하는 패키지입니다. 멤버에는 cmdlet, 공급자, 스크립트, 함수, 변수 및 기타 도구 및 파일이 포함됩니다. 모듈을 가져온 후 세션에서 모듈 멤버를 사용할 수 있습니다.

모듈을 가져오려면 이름, 어셈블리, ModuleInfo, MinimumVersionRequiredVersion 매개 변수를 사용하여 가져올 모듈을 식별합니다. 기본적으로 Import-Module 모듈에서 내보내는 모든 멤버를 가져오지만 별칭, 함수, Cmdlet변수 매개 변수를 사용하여 가져온 멤버를 제한할 수 있습니다. NoClobber 매개 변수를 사용하여 Import-Module 현재 세션의 멤버와 이름이 같은 멤버를 가져오지 못하도록 할 수도 있습니다.

Import-Module 모듈을 현재 세션으로만 가져옵니다. 모듈을 모든 세션으로 가져오려면 PowerShell 프로필에 Import-Module 명령을 추가합니다. 프로필에 대한 자세한 내용은 about_Profiles참조하세요.

Windows PowerShell 3.0부터 Import-Module 사용하여 cmdlet이 CDXML(Cmdlet 정의 XML) 파일에 정의된 CIM(일반 정보 모델) 모듈을 가져올 수 있습니다. 이 기능을 사용하면 C++로 작성된 것과 같이 관리되지 않는 코드 어셈블리에서 구현되는 cmdlet을 사용할 수 있습니다.

이러한 새로운 기능을 통해 Import-Module cmdlet은 Windows 운영 체제를 실행하는 컴퓨터와 다른 운영 체제를 실행하는 컴퓨터를 포함하는 다른 유형의 엔터프라이즈를 관리하기 위한 기본 도구가 됩니다.

PowerShell 및 PowerShell 원격을 사용하도록 설정된 Windows 운영 체제를 실행하는 원격 컴퓨터를 관리하려면 원격 컴퓨터에서 PSSession 만든 다음 Get-ModulePSSession 매개 변수를 사용하여 PSSessionPowerShell 모듈을 가져옵니다. 모듈을 가져온 다음 현재 세션에서 가져온 명령을 사용하는 경우 명령은 원격 컴퓨터의 PSSession 암시적으로 실행됩니다. 이 전략을 사용하여 원격 컴퓨터를 관리할 수 있습니다.

비슷한 전략을 사용하여 Windows 운영 체제를 실행하지 않는 컴퓨터와 PowerShell 원격을 사용하도록 설정하지 않은 Windows 컴퓨터를 포함하여 PowerShell 원격을 사용하도록 설정하지 않은 컴퓨터를 관리할 수 있습니다.

먼저 원격 컴퓨터에서 원격 컴퓨터의 WMI(Windows Management Instrumentation)에 대한 연결인 CIM 세션을 만듭니다. 그런 다음 Import-ModuleCIMSession 매개 변수를 사용하여 원격 컴퓨터에서 CIM 모듈을 가져옵니다. CIM 모듈을 가져온 다음 가져온 명령을 실행하면 명령은 원격 컴퓨터에서 암시적으로 실행됩니다. 이 WMI 및 CIM 전략을 사용하여 원격 컴퓨터를 관리할 수 있습니다.

예제

예제 1: 모듈의 멤버를 현재 세션으로 가져오기

이 예제에서는 PSDiagnostics 모듈의 멤버를 현재 세션으로 가져옵니다. Name 매개 변수 이름은 선택 사항이며 생략할 수 있습니다.

Import-Module -Name PSDiagnostics

기본적으로 Import-Module 모듈을 가져올 때 출력을 생성하지 않습니다. 출력을 요청하려면 PassThru 또는 AsCustomObject 매개 변수 또는 자세한 정보 표시 공통 매개 변수를 사용합니다.

예제 2: 모듈 경로에 지정된 모든 모듈 가져오기

다음은 $env:PSModulePath 환경 변수에 지정된 경로에서 사용 가능한 모든 모듈을 현재 세션으로 가져오는 예제입니다.

Get-Module -ListAvailable | Import-Module

예제 3: 여러 모듈의 멤버를 현재 세션으로 가져오기

이 예제에서는 PSDiagnostics 멤버와 Dism 모듈을 현재 세션으로 가져옵니다.

$m = Get-Module -ListAvailable PSDiagnostics, Dism
Import-Module -ModuleInfo $m

Get-Module cmdlet은 PSDiagnosticsDism 모듈을 가져오고 개체를 $m 변수에 저장합니다. 아직 세션으로 가져오지 않은 모듈을 가져오는 경우 ListAvailable 매개 변수가 필요합니다.

Import-Module ModuleInfo 매개 변수는 모듈을 현재 세션으로 가져오는 데 사용됩니다.

이러한 명령은 파이프라인 연산자(|)를 사용하여 Get-Module 명령의 출력을 Import-Module보내는 것과 같습니다.

예제 4: 경로에 지정된 모든 모듈 가져오기

이 예제에서는 명시적 경로를 사용하여 가져올 모듈을 식별합니다.

Import-Module -Name c:\ps-test\modules\test -Verbose

VERBOSE: Loading module from path 'C:\ps-test\modules\Test\Test.psm1'.
VERBOSE: Exporting function 'my-parm'.
VERBOSE: Exporting function 'Get-Parameter'.
VERBOSE: Exporting function 'Get-Specification'.
VERBOSE: Exporting function 'Get-SpecDetails'.

자세한 정보 표시 매개 변수를 사용하면 Import-Module 모듈을 로드할 때 진행률을 보고합니다. 자세한 정보 표시, PassThru또는 AsCustomObject 매개 변수가 없으면 Import-Module 모듈을 가져올 때 출력을 생성하지 않습니다.

예제 5: 세션으로 가져온 모듈 멤버 제한

이 예제에서는 세션으로 가져올 모듈 멤버를 제한하는 방법과 이 명령이 세션에 미치는 영향을 보여줍니다.

Import-Module PSDiagnostics -Function Disable-PSTrace, Enable-PSTrace
(Get-Module PSDiagnostics).ExportedCommands

Key                          Value
---                          -----
Disable-PSTrace              Disable-PSTrace
Disable-PSWSManCombinedTrace Disable-PSWSManCombinedTrace
Disable-WSManTrace           Disable-WSManTrace
Enable-PSTrace               Enable-PSTrace
Enable-PSWSManCombinedTrace  Enable-PSWSManCombinedTrace
Enable-WSManTrace            Enable-WSManTrace
Get-LogProperties            Get-LogProperties
Set-LogProperties            Set-LogProperties
Start-Trace                  Start-Trace
Stop-Trace                   Stop-Trace

Get-Command -Module PSDiagnostics

CommandType     Name                 Version    Source
-----------     ----                 -------    ------
Function        Disable-PSTrace      6.1.0.0    PSDiagnostics
Function        Enable-PSTrace       6.1.0.0    PSDiagnostics

첫 번째 명령은 PSDiagnostics 모듈에서 Disable-PSTraceEnable-PSTrace cmdlet만 가져옵니다. 함수 매개 변수는 모듈에서 가져온 멤버를 제한합니다. 별칭, 변수Cmdlet 매개 변수를 사용하여 모듈에서 가져오는 다른 멤버를 제한할 수도 있습니다.

Get-Module cmdlet은 PSDiagnostics 모듈을 나타내는 개체를 가져옵니다. ExportedCmdlets 속성에는 모듈이 내보내는 모든 cmdlet이 나열됩니다.

세 번째 명령에서 Get-Command cmdlet의 Module 매개 변수는 PSDiagnostics 모듈에서 가져온 명령을 가져옵니다. 결과는 Disable-PSTraceEnable-PSTrace cmdlet만 가져온 것을 확인합니다.

예제 6: 모듈의 멤버 가져오기 및 접두사 추가

다음은 PSDiagnostics 모듈을 현재 세션으로 가져오고 멤버 이름에 접두사를 추가한 다음 접두사 멤버 이름을 표시하는 예제입니다. 접두사는 현재 세션의 멤버에만 적용됩니다. 모듈은 변경되지 않습니다.

Import-Module PSDiagnostics -Prefix x -PassThru

ModuleType Version    Name               ExportedCommands
---------- -------    ----               ----------------
Script     6.1.0.0    PSDiagnostics      {Disable-xPSTrace, Disable-xPSWSManCombinedTrace, Disable-xW...

Get-Command -Module PSDiagnostics

CommandType     Name                                   Version    Source
-----------     ----                                   -------    ------
Function        Disable-xPSTrace                       6.1.0.0    PSDiagnostics
Function        Disable-xPSWSManCombinedTrace          6.1.0.0    PSDiagnostics
Function        Disable-xWSManTrace                    6.1.0.0    PSDiagnostics
Function        Enable-xPSTrace                        6.1.0.0    PSDiagnostics
Function        Enable-xPSWSManCombinedTrace           6.1.0.0    PSDiagnostics
Function        Enable-xWSManTrace                     6.1.0.0    PSDiagnostics
Function        Get-xLogProperties                     6.1.0.0    PSDiagnostics
Function        Set-xLogProperties                     6.1.0.0    PSDiagnostics
Function        Start-xTrace                           6.1.0.0    PSDiagnostics
Function        Stop-xTrace                            6.1.0.0    PSDiagnostics

Import-Module 접두사 매개 변수를 사용하여 모듈에서 가져온 모든 멤버에 x 접두사를 추가하고 PassThru 매개 변수를 사용하여 가져온 모듈을 나타내는 모듈 개체를 반환합니다.

모듈에서 가져온 멤버를 가져오는 Get-Command cmdlet입니다. 출력은 모듈 멤버의 접두사를 올바르게 표시합니다.

예제 7: 사용자 지정 개체 가져오기 및 사용

이러한 명령은 Import-Module 반환할 사용자 지정 개체를 가져오고 사용하는 방법을 보여 줍니다.

사용자 지정 개체에는 가져온 각 모듈 멤버를 나타내는 가상 멤버가 포함됩니다. 예를 들어 모듈의 cmdlet 및 함수는 사용자 지정 개체의 스크립트 메서드로 변환됩니다.

사용자 지정 개체는 스크립팅에 매우 유용합니다. 가져온 여러 개체의 이름이 같은 경우에도 유용합니다. 개체의 스크립트 메서드를 사용하는 것은 모듈 이름을 포함하여 가져온 멤버의 정규화된 이름을 지정하는 것과 같습니다.

AsCustomObject 매개 변수는 스크립트 모듈을 가져올 때만 사용할 수 있으므로 첫 번째 작업은 사용 가능한 모듈 중 스크립트 모듈을 결정하는 것입니다.

Get-Module -List | Format-Table -Property Name, ModuleType -AutoSize

Name          ModuleType
----          ----------
Show-Calendar     Script
BitsTransfer    Manifest
PSDiagnostics   Manifest
TestCmdlets       Script

$a = Import-Module -Name Show-Calendar -AsCustomObject -Passthru
$a | Get-Member

TypeName: System.Management.Automation.PSCustomObject
Name          MemberType   Definition
----          ----------   ----------
Equals        Method       bool Equals(System.Object obj)
GetHashCode   Method       int GetHashCode()
GetType       Method       type GetType()
ToString      Method       string ToString()
Show-Calendar ScriptMethod System.Object Show-Calendar();

$a."Show-Calendar"()

첫 번째 명령은 Get-Module cmdlet을 사용하여 사용 가능한 모듈을 가져옵니다. 이 명령은 파이프라인 연산자를 사용하여 모듈 개체를 Format-Table cmdlet에 전달합니다. 이 cmdlet에는 테이블에 있는 각 모듈의 NameModuleType 나열됩니다.

두 번째 명령은 Import-Module cmdlet을 사용하여 Show-Calendar 스크립트 모듈을 가져옵니다. 이 명령은 AsCustomObject 매개 변수를 사용하여 사용자 지정 개체를 요청하고 PassThru 매개 변수를 사용하여 개체를 반환합니다. 이 명령은 결과 사용자 지정 개체를 $a 변수에 저장합니다.

세 번째 명령은 파이프라인 연산자를 사용하여 $aPSCustomObject 속성과 메서드를 가져오는 Get-Member cmdlet에 $a 변수를 보냅니다. 출력에는 Show-Calendar() 스크립트 메서드가 표시됩니다.

마지막 명령은 Show-Calendar 스크립트 메서드를 사용합니다. 메서드 이름은 하이픈을 포함하므로 따옴표로 묶어야 합니다.

예제 8: 동일한 세션으로 모듈 다시 가져오기

이 예제에서는 동일한 세션으로 모듈을 다시 가져올 때 Import-ModuleForce 매개 변수를 사용하는 방법을 보여줍니다.

Import-Module PSDiagnostics
Import-Module PSDiagnostics -Force -Prefix PS

첫 번째 명령은 PSDiagnostics 모듈을 가져옵니다. 두 번째 명령은 접두사 매개 변수를 사용하여 모듈을 다시 가져옵니다.

Force 매개 변수를 사용하여 Import-Module 모듈을 제거한 다음 다시 가져옵니다. 이 매개 변수가 없으면 세션에는 각 PSDiagnostics cmdlet의 복사본 2개가 포함됩니다. 하나는 표준 이름과 접두사 이름이 있습니다.

예제 9: 가져온 명령으로 숨겨진 명령 실행

이 예제에서는 가져온 명령에 의해 숨겨진 명령을 실행하는 방법을 보여 줍니다. TestModule 모듈입니다. 에는 연도와 요일을 반환하는 Get-Date 함수가 포함되어 있습니다.

Get-Date

Thursday, August 15, 2019 2:26:12 PM

Import-Module TestModule
Get-Date

19227

Get-Command Get-Date -All | Format-Table -Property CommandType, Name, ModuleName -AutoSize

CommandType     Name         ModuleName
-----------     ----         ----------
Function        Get-Date     TestModule
Cmdlet          Get-Date     Microsoft.PowerShell.Utility

Microsoft.PowerShell.Utility\Get-Date

Thursday, August 15, 2019 2:26:12 PM

첫 번째 Get-Datecmdlet returns a **DateTime** object with the current date. After importing the **TestModule** module,Get-Date'는 해당 연도와 날짜를 반환합니다.

Get-Command All 매개 변수를 사용하여 세션에서 모든 Get-Date 명령을 가져옵니다. 결과에는 세션에 두 개의 Get-Date 명령, 즉 TestModule 모듈의 함수와 Microsoft.PowerShell.Utility 모듈의 cmdlet이 있음을 보여 줍니다.

함수가 cmdlet보다 우선하기 때문에 TestModule 모듈의 Get-Date 함수는 Get-Date cmdlet 대신 실행됩니다. 원래 버전의 Get-Date 실행하려면 명령 이름을 모듈 이름으로 한정해야 합니다.

PowerShell의 명령 우선 순위에 대한 자세한 내용은 about_Command_Precedence참조하세요.

예제 10: 모듈의 최소 버전 가져오기

Import-Module -Name PSWorkflow -MinimumVersion 3.0.0.0

이 명령은 PSWorkflow 모듈을 가져옵니다. Import-Module MinimumVersion 매개 변수를 사용하여 버전 3.0.0.0 이상만 가져옵니다.

RequiredVersion 매개 변수를 사용하여 특정 버전의 모듈을 가져오거나 #Requires 키워드의 모듈버전 매개 변수를 사용하여 스크립트에서 특정 버전의 모듈을 요구할 수도 있습니다.

예제 11: 원격 컴퓨터에서 모듈 가져오기

이 예제에서는 Import-Module cmdlet을 사용하여 원격 컴퓨터에서 모듈을 가져오는 방법을 보여줍니다. 이 명령은 PowerShell의 암시적 원격 기능을 사용합니다.

다른 세션에서 모듈을 가져올 때 현재 세션에서 cmdlet을 사용할 수 있습니다. 그러나 cmdlet을 사용하는 명령은 실제로 원격 세션에서 실행됩니다.

$s = New-PSSession -ComputerName Server01
Get-Module -PSSession $s -ListAvailable -Name NetSecurity

ModuleType Name                                ExportedCommands
---------- ----                                ----------------
Manifest   NetSecurity                         {New-NetIPsecAuthProposal, New-NetIPsecMainModeCryptoProposal, New-Ne...

Import-Module -PSSession $s -Name NetSecurity
Get-Command -Module NetSecurity -Name Get-*Firewall*

CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Function        Get-NetFirewallAddressFilter                       NetSecurity
Function        Get-NetFirewallApplicationFilter                   NetSecurity
Function        Get-NetFirewallInterfaceFilter                     NetSecurity
Function        Get-NetFirewallInterfaceTypeFilter                 NetSecurity
Function        Get-NetFirewallPortFilter                          NetSecurity
Function        Get-NetFirewallProfile                             NetSecurity
Function        Get-NetFirewallRule                                NetSecurity
Function        Get-NetFirewallSecurityFilter                      NetSecurity
Function        Get-NetFirewallServiceFilter                       NetSecurity
Function        Get-NetFirewallSetting                             NetSecurity

Get-NetFirewallRule -DisplayName "Windows Remote Management*" | Format-Table -Property DisplayName, Name -AutoSize

DisplayName                                              Name
-----------                                              ----
Windows Remote Management (HTTP-In)                      WINRM-HTTP-In-TCP
Windows Remote Management (HTTP-In)                      WINRM-HTTP-In-TCP-PUBLIC
Windows Remote Management - Compatibility Mode (HTTP-In) WINRM-HTTP-Compat-In-TCP

첫 번째 명령은 New-PSSession cmdlet을 사용하여 Server01 컴퓨터에 대한 원격 세션(PSSession)을 만듭니다. 이 명령은 $s 변수에 PSSession 저장합니다.

두 번째 명령은 Get-Module cmdlet의 PSSession 매개 변수를 사용하여 $s 변수의 세션에서 NetSecurity 모듈을 가져옵니다. 이 명령은 Invoke-Command cmdlet을 사용하여 $s(Invoke-Command $s {Get-Module -ListAvailable -Name NetSecurity)의 세션에서 Get-Module 명령을 실행하는 것과 같습니다. 출력은 NetSecurity 모듈이 컴퓨터에 설치되어 있으며 $s 변수의 세션에서 사용할 수 있음을 보여줍니다.

세 번째 명령은 Import-Module cmdlet의 PSSession 매개 변수를 사용하여 $s 변수의 세션에서 NetSecurity 모듈을 현재 세션으로 가져옵니다.

네 번째 명령은 Get-Command cmdlet을 사용하여 가져오기 시작하고 NetSecurity 모듈의 방화벽 포함하는 명령을 가져옵니다. 출력은 명령을 가져오고 모듈과 해당 cmdlet을 현재 세션으로 가져왔음을 확인합니다.

다섯 번째 명령은 Get-NetFirewallRule cmdlet을 사용하여 Server01 컴퓨터에서 Windows 원격 관리 방화벽 규칙을 가져옵니다. 이 명령은 Invoke-Command cmdlet을 사용하여 $s 변수의 세션에서 Get-NetFirewallRule 명령을 실행하는 것과 같습니다.

예제 12: Windows 운영 체제 없이 원격 컴퓨터의 스토리지 관리

이 예제에서는 컴퓨터 관리자가 모듈 검색 WMI 공급자를 설치했기 때문에 CIM 명령은 공급자를 위해 설계된 기본값을 사용할 수 있습니다.

이 예제의 명령을 사용하면 Windows 운영 체제를 실행하지 않는 원격 컴퓨터의 스토리지 시스템을 관리할 수 있습니다.

첫 번째 명령은 New-CimSession cmdlet을 사용하여 RSDGF03 원격 컴퓨터에서 세션을 만듭니다. 세션은 원격 컴퓨터의 WMI에 연결됩니다. 이 명령은 CIM 세션을 $cs 변수에 저장합니다.

두 번째 명령은 $cs 변수의 CIM 세션을 사용하여 RSDGF03 컴퓨터에서 Import-Module 명령을 실행합니다. 이 명령은 Name 매개 변수를 사용하여 Storage CIM 모듈을 지정합니다.

세 번째 명령은 Storage 모듈의 Get-Disk 명령에서 Get-Command 명령을 실행합니다. CIM 모듈을 로컬 세션으로 가져오면 PowerShell은 각 명령에 대한 CDXML 파일을 PowerShell 스크립트로 변환합니다. 이 파일은 로컬 세션에서 함수로 표시됩니다.

네 번째 명령은 Get-Disk 명령을 실행합니다. 명령은 로컬 세션에 입력되지만 가져온 원격 컴퓨터에서 암시적으로 실행됩니다. 이 명령은 원격 컴퓨터에서 개체를 가져오고 로컬 세션으로 반환합니다.

$cs = New-CimSession -ComputerName RSDGF03
Import-Module -CimSession $cs -Name Storage
# Importing a CIM module, converts the CDXML files for each command into PowerShell scripts.
# These appear as functions in the local session.
Get-Command Get-Disk

CommandType     Name                  ModuleName
-----------     ----                  ----------
Function        Get-Disk              Storage

# Use implicit remoting to query disks on the remote computer from which the module was imported.
Get-Disk

Number Friendly Name              OperationalStatus          Total Size Partition Style
------ -------------              -----------------          ---------- ---------------
0      Virtual HD ATA Device      Online                          40 GB MBR

매개 변수

-Alias

이 cmdlet이 모듈에서 현재 세션으로 가져오는 별칭을 지정합니다. 쉼표로 구분된 별칭 목록을 입력합니다. 와일드카드 문자가 허용됩니다.

일부 모듈은 모듈을 가져올 때 선택한 별칭을 세션으로 자동으로 내보냅니다. 이 매개 변수를 사용하면 내보낸 별칭 중에서 선택할 수 있습니다.

형식:String[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:True

-ArgumentList

Import-Module 명령 중에 스크립트 모듈에 전달되는 인수 또는 매개 변수 값의 배열을 지정합니다. 이 매개 변수는 스크립트 모듈을 가져올 때만 유효합니다.

별칭, 인수별칭으로 ArgumentList 매개 변수를 참조할 수도 있습니다. 자세한 내용은 about_Aliases참조하세요.

형식:Object[]
별칭:Args
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-AsCustomObject

이 cmdlet은 가져온 모듈 멤버를 나타내는 멤버가 있는 사용자 지정 개체를 반환합니다. 이 매개 변수는 스크립트 모듈에만 유효합니다.

AsCustomObject 매개 변수를 사용하는 경우 Import-Module 모듈 멤버를 세션으로 가져온 다음 PSModuleInfo 개체 대신 PSCustomObject 개체를 반환합니다. 사용자 지정 개체를 변수에 저장하고 점 표기법을 사용하여 멤버를 호출할 수 있습니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Assembly

어셈블리 개체의 배열을 지정합니다. 이 cmdlet은 지정된 어셈블리 개체에 구현된 cmdlet 및 공급자를 가져옵니다. 어셈블리 개체를 포함하는 변수 또는 어셈블리 개체를 만드는 명령을 입력합니다. 어셈블리 개체를 Import-Module파이프할 수도 있습니다.

이 매개 변수를 사용하는 경우 지정된 어셈블리에 의해 구현된 cmdlet 및 공급자만 가져옵니다. 모듈에 다른 파일이 포함되어 있으면 가져오지 않으며 모듈의 중요한 멤버가 누락되었을 수 있습니다. 모듈을 디버깅 및 테스트하거나 모듈 작성자가 모듈을 사용하도록 지시받은 경우 이 매개 변수를 사용합니다.

형식:Assembly[]
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-CimNamespace

CIM 모듈을 노출하는 대체 CIM 공급자의 네임스페이스를 지정합니다. 기본값은 모듈 검색 WMI 공급자의 네임스페이스입니다.

이 매개 변수를 사용하여 Windows 운영 체제를 실행하지 않는 컴퓨터 및 디바이스에서 CIM 모듈을 가져옵니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-CimResourceUri

CIM 모듈의 대체 위치를 지정합니다. 기본값은 원격 컴퓨터에서 모듈 검색 WMI 공급자의 리소스 URI입니다.

이 매개 변수를 사용하여 Windows 운영 체제를 실행하지 않는 컴퓨터 및 디바이스에서 CIM 모듈을 가져옵니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

형식:Uri
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-CimSession

원격 컴퓨터에서 CIM 세션을 지정합니다. CIM 세션이 포함된 변수 또는 CIM 세션을 가져오는 명령(예: Get-CimSession 명령)을 입력합니다.

Import-Module CIM 세션 연결을 사용하여 원격 컴퓨터에서 현재 세션으로 모듈을 가져옵니다. 현재 세션에서 가져온 모듈의 명령을 사용하는 경우 명령은 실제로 원격 컴퓨터에서 실행됩니다.

이 매개 변수를 사용하여 Windows 운영 체제를 실행하지 않는 컴퓨터 및 디바이스 및 PowerShell이 있지만 PowerShell 원격을 사용하도록 설정하지 않은 Windows 컴퓨터에서 모듈을 가져올 수 있습니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

형식:CimSession
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Cmdlet

이 cmdlet이 모듈에서 현재 세션으로 가져오는 cmdlet 배열을 지정합니다. 와일드카드 문자가 허용됩니다.

일부 모듈은 모듈을 가져올 때 선택한 cmdlet을 세션으로 자동으로 내보냅니다. 이 매개 변수를 사용하면 내보낸 cmdlet 중에서 선택할 수 있습니다.

형식:String[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:True

-DisableNameChecking

이 cmdlet은 이름에 승인되지 않은 동사 또는 금지 문자가 포함된 cmdlet 또는 함수를 가져올 때 경고하는 메시지를 표시하지 않음을 나타냅니다.

기본적으로 가져오는 모듈이 이름에 승인되지 않은 동사가 있는 cmdlet 또는 함수를 내보낼 때 PowerShell은 다음 경고 메시지를 표시합니다.

경고: 일부 가져온 명령 이름에는 승인되지 않은 동사가 포함되어 있어 검색할 수 없게 만들 수 있습니다. 자세한 내용은 Verbose 매개 변수를 사용하거나 Get-Verb 입력하여 승인된 동사 목록을 확인합니다.

이 메시지는 경고일 뿐입니다. 비준수 명령을 포함하여 전체 모듈을 계속 가져옵니다. 메시지가 모듈 사용자에게 표시되지만 모듈 작성자가 명명 문제를 해결해야 합니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Force

이 매개 변수를 사용하면 모듈이 현재 모듈 위에 로드되거나 다시 로드됩니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-FullyQualifiedName

모듈 사양의 정규화된 이름을 지정합니다.

형식:ModuleSpecification[]
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-Function

이 cmdlet이 모듈에서 현재 세션으로 가져오는 함수 배열을 지정합니다. 와일드카드 문자가 허용됩니다.

일부 모듈은 모듈을 가져올 때 선택한 함수를 세션으로 자동으로 내보냅니다. 이 매개 변수를 사용하면 내보낸 함수 중에서 선택할 수 있습니다.

형식:String[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:True

-Global

이 cmdlet은 세션의 모든 명령에서 사용할 수 있도록 모듈을 전역 세션 상태로 가져옵니다.

기본적으로 명령 프롬프트, 스크립트 파일 또는 scriptblock에서 Import-Module cmdlet이 호출되면 모든 명령이 전역 세션 상태로 가져옵니다.

다른 모듈에서 호출될 때 Import-Module cmdlet은 중첩된 모듈의 명령을 포함하여 모듈의 명령을 호출자의 세션 상태로 가져옵니다.

모듈 내에서 Import-Module 호출하지 않아야 합니다. 대신 대상 모듈을 부모 모듈의 매니페스트에서 중첩된 모듈로 선언합니다. 중첩된 모듈을 선언하면 종속성의 검색 가능성이 향상됩니다.

Global 매개 변수는 값이 Global인 Scope 매개 변수와 동일합니다.

모듈에서 내보내는 명령을 제한하려면 스크립트 모듈에서 Export-ModuleMember 명령을 사용합니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-MaximumVersion

최대 버전을 지정합니다. 이 cmdlet은 지정된 값보다 작거나 같은 모듈의 버전만 가져옵니다. 해당 버전이 없으면 Import-Module 오류가 발생합니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-MinimumVersion

최소 버전을 지정합니다. 이 cmdlet은 지정된 값보다 크거나 같은 모듈의 버전만 가져옵니다. 해당 버전이 없으면 Import-Module 오류가 발생합니다.

기본적으로 Import-Module 버전 번호를 확인하지 않고 모듈을 가져옵니다.

MinimumVersion 매개 변수 이름 또는 해당 별칭인 Version을 사용합니다.

정확한 버전을 지정하려면 RequiredVersion 매개 변수를 사용합니다. #Requires 키워드의 모듈버전 매개 변수를 사용하여 스크립트에서 특정 버전의 모듈을 요구할 수도 있습니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

형식:Version
별칭:Version
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ModuleInfo

가져올 모듈 개체의 배열을 지정합니다. 모듈 개체가 포함된 변수 또는 모듈 개체를 가져오는 명령(예: Get-Module -ListAvailable)을 입력합니다. 모듈 개체를 Import-Module파이프할 수도 있습니다.

형식:PSModuleInfo[]
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-Name

가져올 모듈의 이름을 지정합니다. 모듈의 이름 또는 모듈의 파일 이름(예: .psd1, .psm1, .dll또는 ps1 파일)을 입력합니다. 파일 경로는 선택 사항입니다. 와일드카드 문자는 허용되지 않습니다. 모듈 이름과 파일 이름을 Import-Module파이프할 수도 있습니다.

경로를 생략하면 Import-Module$env:PSModulePath 환경 변수에 저장된 경로에서 모듈을 찾습니다.

가능한 경우 모듈 이름만 지정합니다. 파일 이름을 지정하면 해당 파일에 구현된 멤버만 가져옵니다. 모듈에 다른 파일이 포함되어 있으면 가져오지 않으며 모듈의 중요한 멤버가 누락되었을 수 있습니다.

형식:String[]
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:True

-NoClobber

이 cmdlet은 현재 세션의 기존 명령과 이름이 같은 명령을 가져오지 않음을 나타냅니다. 기본적으로 Import-Module 내보낸 모든 모듈 명령을 가져옵니다.

이름이 같은 명령은 세션에서 명령을 숨기거나 바꿀 수 있습니다. 세션에서 명령 이름 충돌을 방지하려면 접두사 사용하거나 NoClobber 매개 변수를 . 이름 충돌 및 명령 우선 순위에 대한 자세한 내용은 about_Modulesabout_Command_Precedence"모듈 및 이름 충돌"을 참조하세요.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

형식:SwitchParameter
별칭:NoOverwrite
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-PassThru

작업 중인 항목을 나타내는 개체를 반환합니다. 기본적으로 이 cmdlet은 출력을 생성하지 않습니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Prefix

이 cmdlet이 가져온 모듈 멤버의 이름에 명사에 추가하는 접두사를 지정합니다.

세션의 다른 멤버의 이름이 같을 때 발생할 수 있는 이름 충돌을 방지하려면 이 매개 변수를 사용합니다. 이 매개 변수는 모듈을 변경하지 않으며 모듈에서 자체 용도로 가져오는 파일에는 영향을 주지 않습니다. 이러한 모듈을 중첩된 모듈이라고 합니다. 이 cmdlet은 현재 세션의 멤버 이름에만 영향을 줍니다.

예를 들어 접두사 UTC를 지정한 다음 Get-Date cmdlet을 가져오는 경우 이 cmdlet은 세션에서 Get-UTCDate알려져 있으며 원래 Get-Date cmdlet과 혼동되지 않습니다.

이 매개 변수의 값은 기본 접두사를 지정하는 모듈의 DefaultCommandPrefix 속성보다 우선합니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-PSSession

이 cmdlet이 모듈을 현재 세션으로 가져오는 PowerShell 사용자 관리 세션(PSSession)을 지정합니다. PSSession 포함하는 변수 또는 Get-PSSession 명령과 같은 PSSession가져오는 명령을 입력합니다.

다른 세션에서 현재 세션으로 모듈을 가져오는 경우 로컬 모듈의 cmdlet을 사용하는 것처럼 현재 세션의 모듈에서 cmdlet을 사용할 수 있습니다. 원격 cmdlet을 사용하는 명령은 실제로 원격 세션에서 실행되지만 원격 세부 정보는 PowerShell을 통해 백그라운드에서 관리됩니다.

이 매개 변수는 PowerShell의 암시적 원격 기능을 사용합니다. Import-PSSession cmdlet을 사용하여 세션에서 특정 모듈을 가져오는 것과 같습니다.

Import-Module 다른 세션에서 PowerShell Core 모듈을 가져올 수 없습니다. PowerShell Core 모듈에는 Microsoft.PowerShell로 시작하는 이름이 있습니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

형식:PSSession
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-RequiredVersion

이 cmdlet에서 가져오는 모듈의 버전을 지정합니다. 버전이 설치되어 있지 않으면 Import-Module 오류가 발생합니다.

기본적으로 Import-Module 버전 번호를 확인하지 않고 모듈을 가져옵니다.

최소 버전을 지정하려면 MinimumVersion 매개 변수를 사용합니다. #Requires 키워드의 모듈버전 매개 변수를 사용하여 스크립트에서 특정 버전의 모듈을 요구할 수도 있습니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

RequiredVersion 사용하여 Windows 운영 체제의 기존 릴리스에 포함된 모듈을 가져오는 스크립트는 Windows 운영 체제의 이후 릴리스에서 자동으로 실행되지 않습니다. 이는 Windows 운영 체제의 이후 릴리스에서 PowerShell 모듈 버전 번호가 Windows 운영 체제의 기존 릴리스에서 모듈 버전 번호보다 높기 때문입니다.

형식:Version
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Scope

이 cmdlet이 모듈을 가져오는 범위를 지정합니다.

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

  • 전역. 세션의 모든 명령에서 사용할 수 있습니다. Global 매개 변수와 동일합니다.
  • 로컬. 현재 범위에서만 사용할 수 있습니다.

기본적으로 명령 프롬프트, 스크립트 파일 또는 scriptblock에서 Import-Module cmdlet이 호출되면 모든 명령이 전역 세션 상태로 가져옵니다. -Scope 매개 변수와 로컬 값을 사용하여 모듈 콘텐츠를 스크립트 또는 scriptblock 범위로 가져올 수 있습니다.

다른 모듈에서 호출될 때 Import-Module cmdlet은 중첩된 모듈의 명령을 포함하여 모듈의 명령을 호출자의 세션 상태로 가져옵니다. -Scope Global 또는 -Global 지정하면 이 cmdlet이 모듈을 전역 세션 상태로 가져와 세션의 모든 명령에서 사용할 수 있음을 나타냅니다.

Global 매개 변수는 값이 Global인 Scope 매개 변수와 동일합니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

형식:String
허용되는 값:Local, Global
Position:Named
Default value:Current scope
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Variable

이 cmdlet이 모듈에서 현재 세션으로 가져오는 변수 배열을 지정합니다. 변수 목록을 입력합니다. 와일드카드 문자가 허용됩니다.

일부 모듈은 모듈을 가져올 때 선택한 변수를 세션으로 자동으로 내보냅니다. 이 매개 변수를 사용하면 내보낸 변수 중에서 선택할 수 있습니다.

형식:String[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:True

입력

System.String, System.Management.Automation.PSModuleInfo, System.Reflection.Assembly

모듈 이름, 모듈 개체 또는 어셈블리 개체를 이 cmdlet으로 파이프할 수 있습니다.

출력

None, System.Management.Automation.PSModuleInfo, or System.Management.Automation.PSCustomObject

이 cmdlet은 PSModuleInfo 또는 PSCustomObject반환합니다. 기본적으로 Import-Module 출력을 생성하지 않습니다. PassThru 매개 변수를 지정하면 cmdlet은 모듈을 나타내는 System.Management.Automation.PSModuleInfo 개체를 생성합니다. AsCustomObject 매개 변수를 지정하면 PSCustomObject 개체가 생성됩니다.

참고

  • 모듈을 가져오려면 먼저 로컬 컴퓨터에 모듈을 설치해야 합니다. 즉, 모듈 디렉터리를 로컬 컴퓨터에서 액세스할 수 있는 디렉터리에 복사해야 합니다. 자세한 내용은 about_Modules참조하세요.

    PSSessionCIMSession 매개 변수를 사용하여 원격 컴퓨터에 설치된 모듈을 가져올 수도 있습니다. 그러나 이러한 모듈의 cmdlet을 사용하는 명령은 실제로 원격 컴퓨터의 원격 세션에서 실행됩니다.

  • 이름이 같고 형식이 같은 멤버를 세션으로 가져오는 경우 PowerShell은 기본적으로 마지막으로 가져온 멤버를 사용합니다. 변수와 별칭이 대체되고 원본에 액세스할 수 없습니다. 함수, cmdlet 및 공급자는 새 멤버에 의해서만 숨깁니다. 명령 이름을 스냅인, 모듈 또는 함수 경로의 이름으로 한정하여 액세스할 수 있습니다.

  • 모듈에서 가져온 명령에 대한 서식 데이터를 업데이트하려면 Update-FormatData cmdlet을 사용합니다. Update-FormatData 모듈에서 가져온 세션의 명령에 대한 서식 지정 데이터도 업데이트합니다. 모듈의 서식 파일이 변경되면 Update-FormatData 명령을 실행하여 가져온 명령에 대한 서식 데이터를 업데이트할 수 있습니다. 모듈을 다시 가져올 필요가 없습니다.

  • Windows PowerShell 3.0부터 PowerShell과 함께 설치된 핵심 명령은 모듈에 패키지됩니다. Windows PowerShell 2.0 및 이후 버전의 PowerShell에서 이전 스타일 세션을 만드는 호스트 프로그램에서 핵심 명령은 스냅인(PSSnapins)으로 패키지됩니다. 예외는 항상 스냅인인 Microsoft.PowerShell.Core. 또한 New-PSSession cmdlet에서 시작하는 것과 같은 원격 세션은 핵심 스냅인을 포함하는 이전 스타일의 세션입니다.

    핵심 모듈을 사용하여 최신 스타일의 세션을 만드는 CreateDefault2 메서드에 대한 자세한 내용은 CreateDefault2 메서드참조하세요.

  • Import-Module 다른 세션에서 PowerShell Core 모듈을 가져올 수 없습니다. PowerShell Core 모듈에는 Microsoft.PowerShell로 시작하는 이름이 있습니다.

  • Windows PowerShell 2.0에서는 ExportedCmdletsNestedModules 속성 값과 같은 모듈 개체의 일부 속성 값은 모듈을 가져와서 PassThru 매개 변수가 반환하는 모듈 개체에서 사용할 수 없을 때까지 채워지지 않았습니다. Windows PowerShell 3.0에서는 모든 모듈 속성 값이 채워집니다.

  • Windows PowerShell 3.0과 호환되지 않는 혼합 모드 어셈블리가 포함된 모듈을 가져오려고 하면 Import-Module 다음과 같은 오류 메시지를 반환합니다.

    Import-Module: 혼합 모드 어셈블리는 런타임의 버전 'v2.0.50727'에 대해 빌드되며 추가 구성 정보 없이는 4.0 런타임에 로드할 수 없습니다.

    이 오류는 Windows PowerShell 2.0용으로 설계된 모듈에 하나 이상의 혼합 모듈 어셈블리, 즉 C++ 및 C#과 같은 관리 코드와 비관리 코드가 모두 포함된 어셈블리를 포함하는 경우에 발생합니다.

    혼합 모드 어셈블리가 포함된 모듈을 가져오려면 다음 명령을 사용하여 Windows PowerShell 2.0을 시작한 다음 Import-Module 명령을 다시 시도합니다.

    PowerShell.exe -Version 2.0

  • CIM 세션 기능을 사용하려면 원격 컴퓨터에 ciM(공용 정보 모델) 표준의 Microsoft 구현인 WS-Management 원격 및 WMI(Windows Management Instrumentation)가 있어야 합니다. 또한 컴퓨터에는 모듈 검색 WMI 공급자 또는 동일한 기본 기능이 있는 대체 CIM 공급자가 있어야 합니다.

    Windows 운영 체제를 실행하지 않는 컴퓨터와 PowerShell이 있지만 PowerShell 원격을 사용하도록 설정하지 않은 Windows 컴퓨터에서 CIM 세션 기능을 사용할 수 있습니다.

    CIM 매개 변수를 사용하여 로컬 컴퓨터를 포함하여 PowerShell 원격을 사용하도록 설정한 컴퓨터에서 CIM 모듈을 가져올 수도 있습니다. 로컬 컴퓨터에서 CIM 세션을 만들 때 PowerShell은 WMI 대신 DCOM을 사용하여 세션을 만듭니다.