Statische klassen en methoden gebruikenUsing Static Classes and Methods

Niet alle .NET Framework-klassen kunnen worden gemaakt met behulp van New-Object.Not all .NET Framework classes can be created by using New-Object. Bijvoorbeeld, als u probeert te maken van een System.Environment of een System.Math object met New-Object, krijgt u de volgende foutberichten weergegeven:For example, if you try to create a System.Environment or a System.Math object with New-Object, you will get the following error messages:

PS> 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

PS> 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

Deze fouten optreden omdat er geen mogelijkheid om te maken van een nieuw object van deze klassen.These errors occur because there is no way to create a new object from these classes. Deze klassen zijn verwijzing tapewisselaars methoden en eigenschappen die de status niet wijzigen.These classes are reference libraries of methods and properties that do not change state. U hoeft niet om ze te maken, u ze gewoon gebruiken.You don't need to create them, you simply use them. Klassen en -methoden zoals deze heten statische klassen omdat ze niet worden gemaakt, verwijderd of gewijzigd.Classes and methods such as these are called static classes because they are not created, destroyed, or changed. We bieden voorbeelden die statische klassen gebruiken om dit te wissen.To make this clear we will provide examples that use static classes.

Ophalen van omgevingsgegevens met System.EnvironmentGetting Environment Data with System.Environment

Normaal gesproken is de eerste stap bij het werken met een Windows PowerShell-object lid zijn van Get gebruiken om erachter te komen welke leden bevat.Usually, the first step in working with an object in Windows PowerShell is to use Get-Member to find out what members it contains. Met statische klassen is het proces enigszins verschillen, omdat de werkelijke klasse geen object is.With static classes, the process is a little different because the actual class is not an object.

Verwijst naar de statische System.Environment-klasseReferring to the Static System.Environment Class

U kunt verwijzen naar een statische klasse door de naam van de klasse vierkante haken.You can refer to a static class by surrounding the class name with square brackets. Bijvoorbeeld, u kunt verwijzen naar System.Environment door de naam tussen vierkante haakjes te typen.For example, you can refer to System.Environment by typing the name within brackets. Hiermee geeft u de informatie over een aantal algemene typen:Doing so displays some generic type information:

PS> [System.Environment]

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

Notitie

Zoals we eerder vermeld, Windows PowerShell automatisch voegt u toe aan elke 'System.'As we mentioned previously, Windows PowerShell automatically prepends 'System.' namen van typen wanneer u New-Object.to type names when you use New-Object. Hetzelfde geldt er gebeurt wanneer u een tussen haakjes typenaam, zodat u kunt opgeven [System.Environment] als [omgeving].The same thing happens when using a bracketed type name, so you can specify [System.Environment] as [Environment].

De System.Environment klasse bevat algemene informatie over de werkomgeving voor het huidige proces powershell.exe is wanneer u in Windows PowerShell werkt.The System.Environment class contains general information about the working environment for the current process, which is powershell.exe when working within Windows PowerShell.

Als u details wilt weergeven van deze klasse door te typen proberen [System.Environment] | Get-lid, het objecttype wordt gemeld dat System.RuntimeType , niet System.Environment:If you try to view details of this class by typing [System.Environment] | Get-Member, the object type is reported as being System.RuntimeType , not System.Environment:

PS> [System.Environment] | Get-Member

   TypeName: System.RuntimeType

Als u wilt weergeven statische leden met Get-lid, geef de statische parameter:To view static members with Get-Member, specify the Static parameter:

PS> [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

We kunnen nu eigenschappen om weer te geven van System.Environment selecteren.We can now select properties to view from System.Environment.

Statische eigenschappen van System.Environment weer te gevenDisplaying Static Properties of System.Environment

De eigenschappen van System.Environment ook statisch zijn en moeten worden opgegeven in een andere manier dan normale eigenschappen.The properties of System.Environment are also static, and must be specified in a different way than normal properties. We gebruiken :: om aan te geven in Windows PowerShell die we willen werken met een statische methode of eigenschap.We use :: to indicate to Windows PowerShell that we want to work with a static method or property. Overzicht van de opdracht die is gebruikt voor het starten van Windows PowerShell, controleren we de CommandLine eigenschap door te typen:To see the command that was used to launch Windows PowerShell, we check the CommandLine property by typing:

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

Als u wilt controleren de versie van het besturingssysteem, de eigenschap OSVersion wordt weergegeven door te typen:To check the operating system version, display the OSVersion property by typing:

PS> [System.Environment]::OSVersion

           Platform ServicePack         Version             VersionString
           -------- -----------         -------             -------------
            Win32NT Service Pack 2      5.1.2600.131072     Microsoft Windows...

Kunnen we controleren of de computer wordt afgesloten door weer te geven de HasShutdownStarted eigenschap:We can check whether the computer is in the process of shutting down by displaying the HasShutdownStarted property:

PS> [System.Environment]::HasShutdownStarted
False

Math met System.Math doenDoing Math with System.Math

De statische klasse System.Math is nuttig voor het uitvoeren van sommige rekenkundige bewerkingen.The System.Math static class is useful for performing some mathematical operations. De belangrijke leden van System.Math zijn voornamelijk methoden, waarin kunnen worden weergegeven met behulp van Get-lid.The important members of System.Math are mostly methods, which we can display by using Get-Member.

Notitie

System.Math verschillende methoden met dezelfde naam heeft, maar ze elkaar worden onderscheiden door het type van hun parameters.System.Math has several methods with the same name, but they are distinguished by the type of their parameters.

Typ de volgende opdracht voor het weergeven van de methoden van de System.Math klasse.Type the following command to list the methods of the System.Math class.

PS> [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...

Hiermee worden verschillende methoden voor wiskundige weergegeven.This displays several mathematical methods. Hier volgt een lijst met opdrachten die laten zien hoe u enkele algemene methoden werken:Here is a list of commands that demonstrate how some of the common methods work:

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