Bagikan melalui


Menggunakan kelas dan metode statis

Tidak semua kelas .NET Framework dapat dibuat menggunakan New-Object. Misalnya, jika Anda mencoba membuat System.Environment atau objek System.Math dengan New-Object, Anda akan mendapatkan pesan kesalahan berikut:

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

Kesalahan ini terjadi karena tidak ada cara untuk membuat objek baru dari kelas-kelas ini. Kelas ini adalah pustaka referensi metode dan properti yang tidak mengubah status. Anda tidak perlu membuatnya, Anda cukup menggunakannya. Kelas dan metode seperti ini disebut kelas statis karena tidak dibuat, dihancurkan, atau diubah. Untuk memperjelas ini, kami akan memberikan contoh yang menggunakan kelas statis.

Mendapatkan data lingkungan dengan System.Environment

Biasanya, langkah pertama dalam bekerja dengan objek di Windows PowerShell adalah menggunakan Get-Member untuk mengetahui anggota apa yang dikandungnya. Dengan kelas statis, prosesnya sedikit berbeda karena kelas aktual bukan objek.

Mengacu pada kelas System.Environment statis

Anda dapat merujuk ke kelas statis dengan mengelilingi nama kelas dengan tanda kurung siku. Misalnya, Anda dapat merujuk ke System.Environment dengan mengetikkan nama dalam tanda kurung. Melakukannya menampilkan beberapa informasi jenis generik:

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

Nota

Seperti yang kami sebutkan sebelumnya, Windows PowerShell secara otomatis menambahkan di awal 'System.' untuk mengetik nama saat Anda menggunakan New-Object. Hal yang sama terjadi saat menggunakan nama tipe dalam tanda kurung siku, jadi Anda dapat menetapkan [System.Environment] sebagai [Environment].

Kelas System.Environment berisi informasi umum tentang lingkungan kerja untuk proses saat ini, yang powershell.exe saat bekerja dalam Windows PowerShell.

Jika Anda mencoba melihat detail kelas ini dengan mengetik [System.Environment] | Get-Member, jenis objek dilaporkan sebagai System.RuntimeType , bukan System.Environment:

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

Untuk melihat anggota statis dengan Get-Member, tentukan Statis parameter:

[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

Kita sekarang dapat memilih properti untuk dilihat dari System.Environment.

Menampilkan properti statis System.Environment

Properti System.Environment juga statis, dan harus ditentukan dengan cara yang berbeda dari properti normal. Kami menggunakan :: untuk menunjukkan ke Windows PowerShell bahwa kami ingin bekerja dengan metode atau properti statis. Untuk melihat perintah yang digunakan untuk meluncurkan Windows PowerShell, kami memeriksa properti CommandLine dengan mengetik:

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

Untuk memeriksa versi sistem operasi, tampilkan properti OSVersion dengan mengetik:

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

Kita dapat memeriksa apakah komputer sedang dalam proses dimatikan dengan menampilkan properti HasShutdownStarted.

[System.Environment]::HasShutdownStarted
False

Melakukan matematika dengan System.Math

Kelas statis System.Math berguna untuk melakukan beberapa operasi matematika. Kelas ini mencakup beberapa metode yang berguna, yang dapat kita tampilkan menggunakan Get-Member.

Nota

System.Math memiliki beberapa metode dengan nama yang sama, tetapi dibedakan oleh jenis parameternya.

Ketik perintah berikut untuk mencantumkan metode kelas 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...

Ini menampilkan beberapa metode matematika. Berikut adalah daftar perintah yang menunjukkan cara kerja beberapa metode umum:

[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