다음을 통해 공유


정적 클래스 및 메서드 사용

를 사용하여 New-Object모든 .NET Framework 클래스를 만들 수 있는 것은 아닙니다. 예를 들어 System.Environment 또는 System.Math 개체 New-Object를 만들려는 경우 다음과 같은 오류 메시지가 표시됩니다.

New-Object System.Environment
New-Object : Constructor not found. Cannot find an appropriate constructor for
type System.Environment.
At line:1 char:11
+ New-Object  <<<< System.Environment
New-Object System.Math
New-Object : Constructor not found. Cannot find an appropriate constructor for
type System.Math.
At line:1 char:11
+ New-Object  <<<< System.Math

이러한 오류는 이러한 클래스에서 새 개체를 만들 방법이 없기 때문에 발생합니다. 이러한 클래스는 상태를 변경하지 않는 메서드 및 속성의 참조 라이브러리입니다. 만들 필요가 없으며 단순히 사용합니다. 이러한 클래스 및 메서드는 생성, 제거 또는 변경되지 않으므로 정적 클래스 라고 합니다. 이를 명확히 하기 위해 정적 클래스를 사용하는 예제를 제공합니다.

System.Environment를 사용하여 환경 데이터 가져오기

일반적으로 Windows PowerShell에서 개체를 사용하는 첫 번째 단계는 Get-Member 사용하여 포함된 멤버를 확인하는 것입니다. 정적 클래스의 경우 실제 클래스가 개체가 아니므로 프로세스가 약간 다릅니다.

정적 System.Environment 클래스에 대한 참조

클래스 이름을 대괄호로 묶어 정적 클래스를 참조할 수 있습니다. 예를 들어 대괄호 안에 이름을 입력하여 System.Environment 를 참조할 수 있습니다. 이렇게 하면 몇 가지 제네릭 형식 정보가 표시됩니다.

[System.Environment]
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    Environment                              System.Object

비고

앞에서 설명한 것처럼 Windows PowerShell에는 자동으로 '시스템'이 추가됩니다. New-Object을/를 사용하여 이름을 입력합니다. 대괄호로 묶인 형식 이름을 사용할 때도 마찬가지이므로 [System.Environment][환경]으로 지정할 수 있습니다.

System.Environment 클래스에는 Windows PowerShell 내에서 작업할 때 현재 프로세스 powershell.exe 의 작업 환경에 대한 일반적인 정보가 포함되어 있습니다.

[System.Environment]를 입력하여 이 클래스의 세부 정보를 보려는 경우 | Get-Member, 개체 형식은 System.Environment가 아닌 System.RuntimeType으로 보고됩니다.

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

Get-Member를 사용하여 정적 멤버를 보려면 정적 매개 변수를 지정합니다.

[System.Environment] | Get-Member -Static
   TypeName: System.Environment

Name                       MemberType Definition
----                       ---------- ----------
Equals                     Method     static System.Boolean Equals(Object ob...
Exit                       Method     static System.Void Exit(Int32 exitCode)
...
CommandLine                Property   static System.String CommandLine {get;}
CurrentDirectory           Property   static System.String CurrentDirectory ...
ExitCode                   Property   static System.Int32 ExitCode {get;set;}
HasShutdownStarted         Property   static System.Boolean HasShutdownStart...
MachineName                Property   static System.String MachineName {get;}
NewLine                    Property   static System.String NewLine {get;}
OSVersion                  Property   static System.OperatingSystem OSVersio...
ProcessorCount             Property   static System.Int32 ProcessorCount {get;}
StackTrace                 Property   static System.String StackTrace {get;}
SystemDirectory            Property   static System.String SystemDirectory {...
TickCount                  Property   static System.Int32 TickCount {get;}
UserDomainName             Property   static System.String UserDomainName {g...
UserInteractive            Property   static System.Boolean UserInteractive ...
UserName                   Property   static System.String UserName {get;}
Version                    Property   static System.Version Version {get;}
WorkingSet                 Property   static System.Int64 WorkingSet {get;}
TickCount                               ExitCode

이제 System.Environment에서 볼 속성을 선택할 수 있습니다.

System.Environment의 정적 속성 표시

System.Environment의 속성도 정적이며 일반 속성과 다른 방식으로 지정해야 합니다. 정적 메서드 또는 속성으로 작업할 것을 Windows PowerShell에 나타내는 데 사용합니다 :: . Windows PowerShell을 시작하는 데 사용된 명령을 보려면 다음을 입력하여 CommandLine 속성을 확인합니다.

[System.Environment]::CommandLine
"C:\Program Files\Windows PowerShell\v1.0\powershell.exe"

운영 체제 버전을 확인하려면 다음을 입력하여 OSVersion 속성을 표시합니다.

[System.Environment]::OSVersion
           Platform ServicePack         Version             VersionString
           -------- -----------         -------             -------------
            Win32NT Service Pack 2      5.1.2600.131072     Microsoft Windows...

HasShutdownStarted 속성을 표시하여 컴퓨터가 종료 중인지 확인할 수 있습니다.

[System.Environment]::HasShutdownStarted
False

System.Math을 사용하여 수학 수행

System.Math 정적 클래스는 몇 가지 수학 연산을 수행하는 데 유용합니다. 클래스에는 을 사용하여 Get-Member표시할 수 있는 몇 가지 유용한 메서드가 포함되어 있습니다.

비고

System.Math 에는 이름이 같은 여러 메서드가 있지만 매개 변수 형식으로 구분됩니다.

다음 명령을 입력하여 System.Math 클래스의 메서드를 나열합니다.

[System.Math] | Get-Member -Static -MemberType Methods
   TypeName: System.Math

Name            MemberType Definition
----            ---------- ----------
Abs             Method     static System.Single Abs(Single value), static Sy...
Acos            Method     static System.Double Acos(Double d)
Asin            Method     static System.Double Asin(Double d)
Atan            Method     static System.Double Atan(Double d)
Atan2           Method     static System.Double Atan2(Double y, Double x)
BigMul          Method     static System.Int64 BigMul(Int32 a, Int32 b)
Ceiling         Method     static System.Double Ceiling(Double a), static Sy...
Cos             Method     static System.Double Cos(Double d)
Cosh            Method     static System.Double Cosh(Double value)
DivRem          Method     static System.Int32 DivRem(Int32 a, Int32 b, Int3...
Equals          Method     static System.Boolean Equals(Object objA, Object ...
Exp             Method     static System.Double Exp(Double d)
Floor           Method     static System.Double Floor(Double d), static Syst...
IEEERemainder   Method     static System.Double IEEERemainder(Double x, Doub...
Log             Method     static System.Double Log(Double d), static System...
Log10           Method     static System.Double Log10(Double d)
Max             Method     static System.SByte Max(SByte val1, SByte val2), ...
Min             Method     static System.SByte Min(SByte val1, SByte val2), ...
Pow             Method     static System.Double Pow(Double x, Double y)
ReferenceEquals Method     static System.Boolean ReferenceEquals(Object objA...
Round           Method     static System.Double Round(Double a), static Syst...
Sign            Method     static System.Int32 Sign(SByte value), static Sys...
Sin             Method     static System.Double Sin(Double a)
Sinh            Method     static System.Double Sinh(Double value)
Sqrt            Method     static System.Double Sqrt(Double d)
Tan             Method     static System.Double Tan(Double a)
Tanh            Method     static System.Double Tanh(Double value)
Truncate        Method     static System.Decimal Truncate(Decimal d), static...

여기에는 몇 가지 수학 메서드가 표시됩니다. 다음은 몇 가지 일반적인 메서드의 작동 방식을 보여 주는 명령 목록입니다.

[System.Math]::Sqrt(9)
3
[System.Math]::Pow(2,3)
8
[System.Math]::Floor(3.3)
3
[System.Math]::Floor(-3.3)
-4
[System.Math]::Ceiling(3.3)
4
[System.Math]::Ceiling(-3.3)
-3
[System.Math]::Max(2,7)
7
[System.Math]::Min(2,7)
2
[System.Math]::Truncate(9.3)
9
[System.Math]::Truncate(-9.3)
-9