Použití statických tříd a metod

Ne všechny třídy rozhraní .NET Framework lze vytvořit pomocí New-Object. Pokud se například pokusíte vytvořit objekt System.Environment nebo System.Math s New-Object, zobrazí se následující chybové zprávy:

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

K těmto chybám dochází, protože neexistuje způsob, jak vytvořit nový objekt z těchto tříd. Tyto třídy jsou referenční knihovny metod a vlastností, které nemění stav. Nemusíte je vytvářet, stačí je použít. Třídy a metody, jako jsou tyto, se nazývají statické třídy , protože nejsou vytvořeny, zničeny nebo změněny. Abychom to jasně ukázali, poskytneme příklady, které používají statické třídy.

Získání dat prostředí pomocí system.Environment

Prvním krokem při práci s objektem ve Windows PowerShellu je obvykle použití rutiny Get-Member ke zjištění členů, které obsahuje. U statických tříd se proces trochu liší, protože skutečná třída není objekt.

Odkazující na staticKou třídu System.Environment

Statickou třídu můžete odkazovat tak, že název třídy obklopíte hranatými závorkami. Můžete například odkazovat na System.Environment zadáním názvu v hranatých závorkách. Při tom se zobrazí některé obecné informace o typu:

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

Poznámka:

Jak jsme už zmínili dříve, Windows PowerShell automaticky předpovědí "Systém". zadejte názvy při použití New-Object. Totéž se stane při použití názvu závorky typu, takže můžete zadat [System.Environment] jako [Environment].

Třída System.Environment obsahuje obecné informace o pracovním prostředí pro aktuální proces, který je powershell.exe při práci v prostředí Windows PowerShell.

Pokud se pokusíte zobrazit podrobnosti této třídy zadáním [System.Environment] | Get-Member, typ objektu je hlášen jako System.RuntimeType , nikoli System.Environment:

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

Pokud chcete zobrazit statické členy pomocí get-Member, zadejte statický parametr:

[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

Teď můžeme vybrat vlastnosti, které chcete zobrazit ze system.Environment.

Zobrazení statických vlastností System.Environment

Vlastnosti System.Environment jsou také statické a musí být zadány jiným způsobem než normální vlastnosti. Používáme :: k označení prostředí Windows PowerShell, že chceme pracovat se statickou metodou nebo vlastností. Pokud chcete zobrazit příkaz použitý ke spuštění Windows PowerShellu , zkontrolujeme vlastnost CommandLine zadáním:

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

Pokud chcete zkontrolovat verzi operačního systému, zobrazte vlastnost OSVersion zadáním:

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

Můžeme zkontrolovat, zda je počítač v procesu vypnutí zobrazení HasShutdownStarted vlastnost:

[System.Environment]::HasShutdownStarted
False

Provádění matematických operací pomocí System.Math

Statická třída System.Math je užitečná pro provádění některých matematických operací. Třída obsahuje několik užitečných metod, které můžeme zobrazit pomocí Get-Member.

Poznámka:

System.Math má několik metod se stejným názvem, ale rozlišují se podle typu jejich parametrů.

Zadáním následujícího příkazu zobrazíte seznam metod třídy 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...

Zobrazí se několik matematických metod. Tady je seznam příkazů, které ukazují, jak některé běžné metody fungují:

[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