다음을 통해 공유


Add-Type

PowerShell 세션에 Microsoft .NET 클래스를 추가합니다.

구문

FromSource (기본값)

Add-Type
    [-TypeDefinition] <String>
    [-Language <Language>]
    [-ReferencedAssemblies <String[]>]
    [-OutputAssembly <String>]
    [-OutputType <OutputAssemblyType>]
    [-PassThru]
    [-IgnoreWarnings]
    [-CompilerOptions <String[]>]
    [<CommonParameters>]

FromMember

Add-Type
    [-Name] <String>
    [-MemberDefinition] <String[]>
    [-Namespace <String>]
    [-UsingNamespace <String[]>]
    [-Language <Language>]
    [-ReferencedAssemblies <String[]>]
    [-OutputAssembly <String>]
    [-OutputType <OutputAssemblyType>]
    [-PassThru]
    [-IgnoreWarnings]
    [-CompilerOptions <String[]>]
    [<CommonParameters>]

FromPath

Add-Type
    [-Path] <String[]>
    [-ReferencedAssemblies <String[]>]
    [-OutputAssembly <String>]
    [-OutputType <OutputAssemblyType>]
    [-PassThru]
    [-IgnoreWarnings]
    [-CompilerOptions <String[]>]
    [<CommonParameters>]

FromLiteralPath

Add-Type
    -LiteralPath <String[]>
    [-ReferencedAssemblies <String[]>]
    [-OutputAssembly <String>]
    [-OutputType <OutputAssemblyType>]
    [-PassThru]
    [-IgnoreWarnings]
    [-CompilerOptions <String[]>]
    [<CommonParameters>]

FromAssemblyName

Add-Type
    -AssemblyName <String[]>
    [-PassThru]
    [<CommonParameters>]

Description

Add-Type cmdlet을 사용하면 PowerShell 세션에서 Microsoft .NET Core 클래스를 정의할 수 있습니다. 그런 다음 New-Object cmdlet을 사용하여 개체를 인스턴스화하고 .NET Core 개체를 사용하는 것처럼 개체를 사용할 수 있습니다. PowerShell 프로필에 Add-Type 명령을 추가하면 모든 PowerShell 세션에서 클래스를 사용할 수 있습니다.

기존 어셈블리 또는 소스 코드 파일을 지정하여 형식을 지정하거나 소스 코드를 인라인으로 지정하거나 변수에 저장할 수 있습니다. 메서드만 지정하고 클래스를 정의하고 생성하는 Add-Type 수도 있습니다. Windows에서는 이 기능을 사용하여 PowerShell에서 관리되지 않는 함수에 대한 플랫폼 호출(P/Invoke) 호출을 수행할 수 있습니다. 소스 코드를 지정하는 경우 Add-Type 지정된 소스 코드를 컴파일하고 새 .NET Core 형식을 포함하는 메모리 내 어셈블리를 생성합니다.

Add-Type 매개 변수를 사용하여 대체 언어 및 컴파일러를 지정할 수 있습니다. C#은 기본값, 컴파일러 옵션, 어셈블리 종속성, 클래스 네임스페이스, 형식 이름 및 결과 어셈블리입니다.

PowerShell 7부터 이름이 같은 형식이 이미 있는 경우 Add-Type 형식을 컴파일하지 않습니다. 또한 Add-Typeref포함하는 폴더 아래의 pwsh.dll 폴더에서 어셈블리를 찾습니다.

예제

예제 1: 세션에 .NET 형식 추가

다음은 변수에 저장된 소스 코드를 지정하여 BasicTest 클래스를 세션에 추가하는 예제입니다. BasicTest 클래스는 정수를 추가하고, 개체를 만들고, 정수를 곱하는 데 사용됩니다.

$Source = @"
public class BasicTest
{
  public static int Add(int a, int b)
    {
        return (a + b);
    }
  public int Multiply(int a, int b)
    {
    return (a * b);
    }
}
"@

Add-Type -TypeDefinition $Source
[BasicTest]::Add(4, 3)
$BasicTestObject = New-Object BasicTest
$BasicTestObject.Multiply(5, 2)

$Source 변수는 클래스의 소스 코드를 저장합니다. 형식에는 Add라는 정적 메서드와 Multiply호출된 비정적 메서드가 있습니다.

Add-Type cmdlet은 세션에 클래스를 추가합니다. 인라인 소스 코드를 사용하므로 명령은 TypeDefinition 매개 변수를 사용하여 $Source 변수에 코드를 지정합니다.

Add 클래스의 정적 메서드는 double-colon 문자(::)를 사용하여 클래스의 정적 멤버를 지정합니다. 정수가 추가되고 합계가 표시됩니다.

New-Object cmdlet은 BasicTest 클래스의 인스턴스를 인스턴스화합니다. 새 개체를 $BasicTestObject 변수에 저장합니다.

$BasicTestObject Multiply 메서드를 사용합니다. 정수가 곱하고 제품이 표시됩니다.

예제 2: 추가된 형식 검사

이 예제에서는 Get-Member cmdlet을 사용하여 예제 1에서 만든 Add-TypeNew-Object cmdlet이개체를 검사합니다.

[BasicTest] | Get-Member
   TypeName: System.RuntimeType

Name                 MemberType Definition
----                 ---------- ----------
AsType               Method     type AsType()
Clone                Method     System.Object Clone(), System.Object ICloneable.Clone()
Equals               Method     bool Equals(System.Object obj), bool Equals(type o)
FindInterfaces       Method     type[] FindInterfaces(System.Reflection.TypeFilter filter...
...
[BasicTest] | Get-Member -Static
  TypeName: BasicTest

Name            MemberType Definition
----            ---------- ----------
Add             Method     static int Add(int a, int b)
Equals          Method     static bool Equals(System.Object objA, System.Object objB)
new             Method     BasicTest new()
ReferenceEquals Method     static bool ReferenceEquals(System.Object objA, System.Object objB)
$BasicTestObject | Get-Member
   TypeName: BasicTest

Name        MemberType Definition
----        ---------- ----------
Equals      Method     bool Equals(System.Object obj)
GetHashCode Method     int GetHashCode()
GetType     Method     type GetType()
Multiply    Method     int Multiply(int a, int b)
ToString    Method     string ToString()

Get-Member cmdlet은 세션에 추가된 BasicTest 클래스의 형식과 멤버를 Add-Type. Get-Member 명령은 System.Object 클래스에서 파생된 System.RuntimeType 개체임을 표시합니다.

Get-Member Static 매개 변수는 BasicTest 클래스의 정적 속성과 메서드를 가져옵니다. 출력은 Add 메서드가 포함되어 있음을 보여줍니다.

Get-Member cmdlet은 $BasicTestObject 변수에 저장된 개체의 멤버를 가져옵니다. $BasicTestObject New-Object 클래스와 함께 cmdlet을 사용하여 만들었습니다. 출력은 $BasicTestObject 변수의 값이 BasicTest 클래스의 인스턴스이며 Multiply멤버를 포함하고 있음을 보여줍니다.

예제 3: 어셈블리에서 형식 추가

다음은 JsonSchema.NET.dll 어셈블리의 클래스를 현재 세션에 추가하는 예제입니다.

Set-Location -Path $PSHOME
$AccType = Add-Type -AssemblyName *jsonschema* -PassThru

Set-Location Path 매개 변수를 사용하여 $PSHOME 변수를 지정합니다. 변수는 DLL 파일이 있는 PowerShell 설치 디렉터리를 참조합니다.

$AccType 변수는 Add-Type cmdlet을 사용하여 만든 개체를 저장합니다. Add-Type AssemblyName 매개 변수를 사용하여 어셈블리의 이름을 지정합니다. 별표(*) 와일드카드 문자를 사용하면 이름이나 철자를 잘 모르는 경우에도 올바른 어셈블리를 가져올 수 있습니다. PassThru 매개 변수는 세션에 추가되는 클래스를 나타내는 개체를 생성합니다.

예제 4: 네이티브 Windows API 호출

이 예제에서는 PowerShell에서 네이티브 Windows API를 호출하는 방법을 보여 줍니다. Add-Type 플랫폼 호출(P/Invoke) 메커니즘을 사용하여 PowerShell에서 User32.dll 함수를 호출합니다. 이 예제는 Windows 운영 체제를 실행하는 컴퓨터에서만 작동합니다.

$Signature = @"
[DllImport("user32.dll")]public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
"@

$addTypeSplat = @{
    MemberDefinition = $Signature
    Name = "Win32ShowWindowAsync"
    Namespace = 'Win32Functions'
    PassThru = $true
}
$ShowWindowAsync = Add-Type @addTypeSplat

# Minimize the PowerShell console

$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $PID).MainWindowHandle, 2)

# Restore the PowerShell console

$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $PID).MainWindowHandle, 4)

$Signature 변수는 ShowWindowAsync 함수의 C# 서명을 저장합니다. 결과 메서드가 PowerShell 세션에 표시되도록 하기 위해 public 키워드가 표준 서명에 추가되었습니다. 자세한 내용은 ShowWindowAsync 함수를 참조하세요.

$ShowWindowAsync 변수는 Add-TypePassThru 매개 변수로 만든 개체를 저장합니다. Add-Type cmdlet은 ShowWindowAsync 함수를 PowerShell 세션에 정적 메서드로 추가합니다. 이 명령은 MemberDefinition 매개 변수를 사용하여 $Signature 변수에 저장된 메서드 정의를 지정합니다. 이 명령은 Name네임스페이스 매개 변수를 사용하여 클래스의 이름과 네임스페이스를 지정합니다. PassThru 매개 변수는 형식을 나타내는 개체를 생성합니다.

ShowWindowAsync 정적 메서드는 PowerShell 콘솔을 최소화하고 복원하기 위해 명령에 사용됩니다. 이 메서드는 창 핸들과 창 표시 방법을 지정하는 정수라는 두 개의 매개 변수를 사용합니다.

PowerShell 콘솔을 최소화하기 위해 ShowWindowAsyncGet-Process 자동 변수와 함께 $PID cmdlet을 사용하여 현재 PowerShell 세션을 호스팅하는 프로세스를 가져옵니다. 그런 다음 현재 프로세스의 MainWindowHandle 속성과 2 값을 나타내는 SW_MINIMIZE값을 사용합니다.

창을 복원하기 위해 ShowWindowAsync4 값을 나타내는 창 위치에 SW_RESTORE 값을 사용합니다.

창을 최대화하려면 3나타내는 SW_MAXIMIZE 값을 사용합니다.

매개 변수

-AssemblyName

형식을 포함하는 어셈블리의 이름을 지정합니다. Add-Type 지정된 어셈블리에서 형식을 가져옵니다. 이 매개 변수는 어셈블리 이름을 기반으로 형식을 만들 때 필요합니다.

어셈블리의 전체 또는 단순 이름(부분 이름이라고도 함)을 입력합니다. 와일드카드 문자는 어셈블리 이름에 허용됩니다. 단순 또는 부분 이름을 입력하면 Add-Type 전체 이름으로 확인한 다음 전체 이름을 사용하여 어셈블리를 로드합니다.

경로 또는 LiteralPath 매개 변수를 사용하면 로드하려는 어셈블리를 로드할 수 있습니다. AssemblyName 매개 변수를 사용하는 경우 PowerShell은 표준 .NET 어셈블리 확인 프로세스를 사용하여 .NET에 어셈블리 이름을 확인하도록 요청합니다. .NET은 애플리케이션 폴더를 먼저 검색하므로 Add-Type 현재 폴더의 버전 대신 $PSHOME 어셈블리를 로드할 수 있습니다. 자세한 내용은 어셈블리 위치참조하세요.

.NET에서 이름을 확인하지 못하면 PowerShell은 현재 위치를 찾아 어셈블리를 찾습니다. AssemblyName 매개 변수에서 와일드카드를 사용하면 .NET 어셈블리 확인 프로세스가 실패하여 PowerShell이 현재 위치를 확인합니다.

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:True
DontShow:False
별칭:AN

매개 변수 집합

FromAssemblyName
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-CompilerOptions

소스 코드 컴파일러에 대한 옵션을 지정합니다. 이러한 옵션은 수정 없이 컴파일러로 전송됩니다.

이 매개 변수를 사용하면 컴파일러가 실행 파일을 생성하거나, 리소스를 포함하거나, /unsafe 옵션과 같은 명령줄 옵션을 설정하도록 지시할 수 있습니다.

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

FromSource
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromMember
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromLiteralPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-IgnoreWarnings

컴파일러 경고를 무시합니다. 이 매개 변수를 사용하여 Add-Type 컴파일러 경고를 오류로 처리하지 못하도록 합니다.

매개 변수 속성

형식:SwitchParameter
Default value:False
와일드카드 지원:False
DontShow:False

매개 변수 집합

FromSource
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromMember
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromLiteralPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Language

소스 코드에 사용되는 언어를 지정합니다. 이 매개 변수에 허용되는 값은 CSharp.

매개 변수 속성

형식:Language
Default value:CSharp
허용되는 값:CSharp
와일드카드 지원:False
DontShow:False

매개 변수 집합

FromSource
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromMember
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-LiteralPath

형식을 포함하는 소스 코드 파일 또는 어셈블리 DLL 파일의 경로를 지정합니다. Path달리 LiteralPath 매개 변수의 값은 입력된 대로 정확하게 사용됩니다. 와일드카드로 해석되는 문자는 없습니다. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.

경로 또는 LiteralPath 매개 변수를 사용하면 로드하려는 어셈블리를 로드할 수 있습니다.

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False
별칭:PSPath, Lp 로

매개 변수 집합

FromLiteralPath
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-MemberDefinition

클래스에 대한 새 속성 또는 메서드를 지정합니다. Add-Type 속성 또는 메서드를 지원하는 데 필요한 템플릿 코드를 생성합니다.

Windows에서는 이 기능을 사용하여 PowerShell에서 관리되지 않는 함수에 대한 플랫폼 호출(P/Invoke) 호출을 수행할 수 있습니다.

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

FromMember
Position:1
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Name

만들 클래스의 이름을 지정합니다. 이 매개 변수는 멤버 정의에서 형식을 생성할 때 필요합니다.

형식 이름 및 네임스페이스는 세션 내에서 고유해야 합니다. 형식을 언로드하거나 변경할 수 없습니다. 형식의 코드를 변경하려면 이름을 변경하거나 새 PowerShell 세션을 시작해야 합니다. 그렇지 않으면 명령이 실패합니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

FromMember
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Namespace

기본적으로 이 명령은 microsoft.PowerShell.Commands.AddType.AutoGeneratedTypes 네임스페이스에 형식을 만듭니다. 이 매개 변수를 사용하면 지정된 네임스페이스에 형식이 만들어집니다. 값이 빈 문자열이면 형식이 전역 네임스페이스에 만들어집니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False
별칭:NS

매개 변수 집합

FromMember
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-OutputAssembly

위치에 지정된 이름을 사용하여 어셈블리에 대한 DLL 파일을 생성합니다. 선택적 경로 및 파일 이름을 입력합니다. 와일드카드 문자가 허용됩니다. 기본적으로 Add-Type 메모리에만 어셈블리를 생성합니다. 어셈블리를 파일에 출력하는 경우 새로 만든 어셈블리에서 형식을 반환하려면 PassThru 매개 변수를 포함해야 합니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:True
DontShow:False
별칭:OA

매개 변수 집합

FromSource
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromMember
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromLiteralPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-OutputType

출력 어셈블리의 출력 형식을 지정합니다. 기본적으로 출력 형식은 지정되지 않습니다. 이 매개 변수는 명령에서 출력 어셈블리가 지정된 경우에만 유효합니다. 값에 대한 자세한 내용은 OutputAssemblyType 열거형참조하세요.

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

  • ConsoleApplication
  • Library
  • WindowsApplication

중요합니다

PowerShell 7.1을 기준으로 ConsoleApplicationWindowsApplication 지원되지 않으며 OutputType 매개 변수의 값으로 지정된 경우 PowerShell에서 종료 오류를 throw합니다.

매개 변수 속성

형식:OutputAssemblyType
Default value:None
허용되는 값:ConsoleApplication, Library, WindowsApplication
와일드카드 지원:False
DontShow:False
별칭:오티

매개 변수 집합

FromSource
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromMember
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromLiteralPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-PassThru

추가된 형식을 나타내는 System.Runtime 개체를 반환합니다. 기본적으로 이 cmdlet은 출력을 생성하지 않습니다. OutputAssembly 사용하여 DLL 파일을 만들고 새로 만든 어셈블리에서 형식을 반환하려는 경우 이 매개 변수를 사용합니다.

매개 변수 속성

형식:SwitchParameter
Default value:False
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Path

형식을 포함하는 소스 코드 파일 또는 어셈블리 DLL 파일의 경로를 지정합니다.

소스 코드 파일을 제출하는 경우 Add-Type 파일의 코드를 컴파일하고 형식의 메모리 내 어셈블리를 만듭니다. 경로 값에 지정된 파일 확장명은 Add-Type 사용하는 컴파일러를 결정합니다.

경로 또는 LiteralPath 매개 변수를 사용하면 로드하려는 어셈블리를 로드할 수 있습니다.

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

FromPath
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-ReferencedAssemblies

형식이 의존하는 어셈블리를 지정합니다. 기본적으로 Add-Type 참조는 System.dllSystem.Management.Automation.dll. PowerShell 6부터 ReferencedAssemblies 기본 .NET 어셈블리는 포함되지 않습니다. 이 매개 변수에 전달된 값에 특정 참조를 포함해야 합니다.

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False
별칭:RA

매개 변수 집합

FromSource
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromMember
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
FromLiteralPath
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-TypeDefinition

형식 정의를 포함하는 소스 코드를 지정합니다. 문자열 또는 여기 문자열에 소스 코드를 입력하거나 소스 코드가 포함된 변수를 입력합니다. here-strings에 대한 자세한 내용은 about_Quoting_Rules을 참조하세요.

형식 정의에 네임스페이스 선언을 포함합니다. 네임스페이스 선언을 생략하면 형식의 이름이 다른 형식이나 다른 형식의 바로 가기와 같아 의도하지 않은 덮어쓰기가 발생할 수 있습니다. 예를 들어 예외형식을 정의하는 경우 예외 사용하는 스크립트는 System.Exception 대한 바로 가기로 실패합니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

FromSource
Position:0
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-UsingNamespace

클래스에 필요한 다른 네임스페이스를 지정합니다. C# 키워드와 비슷하게 Using.

기본적으로 Add-Type시스템 네임스페이스를 참조합니다. MemberDefinition 매개 변수를 사용하는 경우 Add-Type 기본적으로 System.Runtime.InteropServices 네임스페이스를 참조합니다. UsingNamespace 매개 변수를 사용하여 추가하는 네임스페이스는 기본 네임스페이스 외에도 참조됩니다.

매개 변수 속성

형식:

String[]

Default value:System namespace
와일드카드 지원:False
DontShow:False
별칭:Using

매개 변수 집합

FromMember
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

None

개체를 이 cmdlet에 파이프로 연결할 수 없습니다.

출력

None

기본적으로 이 cmdlet은 출력을 반환하지 않습니다.

Type

PassThru 매개 변수를 사용하는 경우 이 cmdlet은 새 형식을 나타내는 System.Type 개체를 반환합니다.

참고

추가하는 형식은 현재 세션에만 존재합니다. 모든 세션에서 형식을 사용하려면 PowerShell 프로필에 추가합니다. 프로필에 대한 자세한 내용은 about_Profiles참조하세요.

형식 이름 및 네임스페이스는 세션 내에서 고유해야 합니다. 형식을 언로드하거나 변경할 수 없습니다. 형식의 코드를 변경해야 하는 경우 이름을 변경하거나 새 PowerShell 세션을 시작해야 합니다. 그렇지 않으면 명령이 실패합니다.

Windows PowerShell(버전 5.1 이하)에서는 아직 로드되지 않은 모든 항목에 Add-Type 사용해야 합니다. 가장 일반적으로 GAC(전역 어셈블리 캐시)에 있는 어셈블리에 적용됩니다. PowerShell 6 이상에는 GAC가 없으므로 PowerShell은 $PSHOME자체 어셈블리를 설치합니다. 이러한 어셈블리는 요청에 따라 자동으로 로드되므로 Add-Type 사용하여 로드할 필요가 없습니다. 그러나 스크립트가 모든 버전의 PowerShell과 암시적으로 호환되도록 허용하려면 Add-Type 사용할 수 있습니다.

GAC의 어셈블리는 경로가 아닌 형식 이름으로 로드할 수 있습니다. 임의 경로에서 어셈블리를 로드하려면 해당 어셈블리를 자동으로 로드할 수 없으므로 필요합니다 Add-Type.