수색…


소개

이 항목에서는 PowerShell 스크립트 내에서 C # 또는 VB .NET Managed 코드를 스크립팅하고 활용하는 방법을 간략하게 설명합니다. 이 항목에서는 Add-Type cmdlet의 모든 측면을 살펴 보지는 않습니다.

Add-Type cmdlet에 대한 자세한 내용은 MSDN 설명서 (5.1 용)를 참조 하십시오. https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/add- 유형

매개 변수

매개 변수 세부
-TypeDefinition <String_> 코드를 문자열로 받아들입니다.
- 언어 <String_> 관리 코드 language.Accepted 값을 지정합니다 : CSharp, CSharpVersion3, CSharpVersion2, VisualBasic, JScript

비고

추가 된 유형 제거 중

이후 버전의 PowerShell에서는 Remove-TypeData가 PowerShell cmdlet 라이브러리에 추가되어 세션 내에서 형식을 제거 할 수있게되었습니다. 이 cmdlet에 대한 자세한 내용은 다음을 참조 하십시오. https://msdn.microsoft.com/en-us/powershell/reference/4.0/microsoft.powershell.utility/remove-typedata

CSharp 및 .NET 구문

.NET을 사용하는 사람들은 C #의 여러 버전이 특정 구문에 대한 지원 수준이 크게 다를 수 있다는 것을 알 수 있습니다.

Powershell 1.0 및 / 또는 -Language CSharp를 사용하는 경우 관리되는 코드는 C # 개발자가 Generics, Linq 및 Lambda와 같은 요즘 생각하지 않고 일반적으로 사용하는 많은 기능이 부족한 .NET 2.0을 활용하게됩니다. 그 외에 공식적인 다형성이 있습니다.이 다형성은 이후 버전의 C # / .NET에서 기본 매개 변수로 처리됩니다.

C # 예제

이 예제는 PowerShell 스크립트에 기본 C #을 포함시키고이를 runspace / 세션에 추가하고 PowerShell 구문 내에서 코드를 활용하는 방법을 보여줍니다.

$code = "
using System;

namespace MyNameSpace
{
    public class Responder
    {
        public static void StaticRespond()
        {
            Console.WriteLine("Static Response");
        }

        public void Respond()
        {
            Console.WriteLine("Instance Respond");
        }
    }
}
"@

# Check the type has not been previously added within the session, otherwise an exception is raised
if (-not ([System.Management.Automation.PSTypeName]'MyNameSpace.Responder').Type)
{
    Add-Type -TypeDefinition $code -Language CSharp;
}

[MyNameSpace.Responder]::StaticRespond();

$instance = New-Object MyNameSpace.Responder;
$instance.Respond();

VB.NET 예제

이 예제는 PowerShell 스크립트에 기본 C #을 포함시키고이를 runspace / 세션에 추가하고 PowerShell 구문 내에서 코드를 활용하는 방법을 보여줍니다.

$code = @"
Imports System

Namespace MyNameSpace
    Public Class Responder
        Public Shared Sub StaticRespond()
            Console.WriteLine("Static Response")
        End Sub

        Public Sub Respond()
            Console.WriteLine("Instance Respond")
        End Sub
    End Class
End Namespace
"@

# Check the type has not been previously added within the session, otherwise an exception is raised
if (-not ([System.Management.Automation.PSTypeName]'MyNameSpace.Responder').Type)
{
    Add-Type -TypeDefinition $code -Language VisualBasic;
}

[MyNameSpace.Responder]::StaticRespond();

$instance = New-Object MyNameSpace.Responder;
$instance.Respond();


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow