PowerShell基础教程(14)——使用静态类和方法

PowerShell基础教程(14)——使用静态类和方法   <o:p></o:p>

不是所有的 .NET Framework 类都可使用 New-Object 进行创建。例如,如果尝试使用 New-Object 创建 System.Environment System.Math 对象,则将收到以下错误消息:

PS> New-Object System.Environment<o:p></o:p>

New-Object :找不到构造函数。无法找到适合类型 System.Environment 的构造函数。<o:p></o:p>

所在行:1 字符:11 <o:p></o:p>

+ New-Object  <<<< System.Environment<o:p></o:p>

PS> New-Object System.Math<o:p></o:p>

New-Object :找不到构造函数。无法找到适合类型 System.Math 的构造函数。<o:p></o:p>

所在行:1 字符:11 <o:p></o:p>

+ New-Object  <<<< System.Math<o:p></o:p>

<o:p> </o:p>

之所以出现这些错误是因为无法从这些类中创建新的对象。这些类是不能更改状态的方法和属性的引用库。您无法创建这些类,只能使用他们。由于不能创建、销毁或更改这些类和方法,因此将这些类和方法称为静态类。为了清楚了解此部分内容,我们将提供使用静态类的示例。

使用 System.Environment 获取环境数据<o:p></o:p>

通常 Windows PowerShell 中处理对象的第一步为使用 Get-Member 显示该对象包含的成员。使用静态类,过程可能稍有差异,这是因为实际类不是对象。

引用 System.Environment 静态类<o:p></o:p>

通过使用方括号括住类名称可以引用静态类。例如,可以在方括号中键入名称来引用 System.Environment。从而,就可显示一些泛型类型的信息:

PS> [System.Environment]<o:p></o:p>

<o:p> </o:p>

IsPublic IsSerial Name                                     BaseType<o:p></o:p>

-------- -------- ----                                     --------<o:p></o:p>

True     False    Environment                              System.Object<o:p></o:p>

<o:p> </o:p>

<!---->请注意: <o:p></o:p>

如上所述在使用 New-Object Windows PowerShell 将自动加上System.以便于键入名称。在使用方括号类型名称时亦即如此,因此,可以将 [System.Environment] 指定为 [Environment]<o:p></o:p>

Windows PowerShell 中工作时System.Environment 类可包含有关当前进程的工作环境powershell.exe的常规信息。

若要通过键入 [System.Environment] | Get-Member 来查看此类的详细信息则对象类型将报告为 System.RuntimeType而不是 System.Environment

PS> [System.Environment] | Get-Member<o:p></o:p>

<o:p> </o:p>

TypeName:System.RuntimeType<o:p></o:p>

<o:p> </o:p>

若要使用 Get-Member 查看静态成员请指定 Static 参数

PS> [System.Environment] | Get-Member -Static<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

TypeName:System.Environment<o:p></o:p>

<o:p> </o:p>

Name                       MemberType Definition<o:p></o:p>

----                       ---------- ----------<o:p></o:p>

Equals                     Method     static System.Boolean Equals(Object ob...<o:p></o:p>

Exit                       Method     static System.Void Exit(Int32 exitCode)<o:p></o:p>

...<o:p></o:p>

CommandLine                Property   static System.String CommandLine {get;}<o:p></o:p>

CurrentDirectory           Property   static System.String CurrentDirectory ...<o:p></o:p>

ExitCode                   Property   static System.Int32 ExitCode {get;set;}<o:p></o:p>

HasShutdownStarted         Property   static System.Boolean HasShutdownStart...<o:p></o:p>

MachineName                Property   static System.String MachineName {get;}<o:p></o:p>

NewLine                    Property   static System.String NewLine {get;}<o:p></o:p>

OSVersion                  Property   static System.OperatingSystem OSVersio...<o:p></o:p>

ProcessorCount             Property   static System.Int32 ProcessorCount {get;}<o:p></o:p>

StackTrace                 Property   static System.String StackTrace {get;}<o:p></o:p>

SystemDirectory            Property   static System.String SystemDirectory {...<o:p></o:p>

TickCount                  Property   static System.Int32 TickCount {get;}<o:p></o:p>

UserDomainName             Property   static System.String UserDomainName {g...<o:p></o:p>

UserInteractive            Property   static System.Boolean UserInteractive ...<o:p></o:p>

UserName                   Property   static System.String UserName {get;}<o:p></o:p>

Version                    Property   static System.Version Version {get;}<o:p></o:p>

WorkingSet                 Property   static System.Int64 WorkingSet {get;}<o:p></o:p>

TickCount                               ExitCode<o:p></o:p>

<o:p> </o:p>

现在可以从 System.Environment 中选择要查看的属性。

显示 System.Environment 的静态属性<o:p></o:p>

System.Environment 的属性也是静态的因此必须采用与标准属性的指定方式不同的方式进行指定。从而,使用 :: 来指示 Windows PowerShell 要进行处理的静态方法或属性。若要查看用于启动 Windows PowerShell 的命令,则可通过键入以下命令来检查 CommandLine 属性:

PS> [System.Environment]::Commandline<o:p></o:p>

"C:\Program Files\Windows PowerShell\v1.0\powershell.exe"<o:p></o:p>

<o:p> </o:p>

若要检查操作系统版本则可通过键入以下命令显示 OSVersion 属性

PS> [System.Environment]::OSVersion<o:p></o:p>

<o:p> </o:p>

Platform ServicePack         Version             VersionString<o:p></o:p>

           -------- -----------         -------             -------------<o:p></o:p>

Win32NT Service Pack 2      5.1.2600.131072     Microsoft Window...<o:p></o:p>

<o:p> </o:p>

通过显示 HasShutdownStarted 属性可以检查计算机是否正在关闭

PS> [System.Environment]::HasShutdownStarted<o:p></o:p>

False<o:p></o:p>

<o:p> </o:p>

使用 System.Math 进行数学运算<o:p></o:p>

对于进行某些数学运算System.Math 静态类非常有用。System.Math 的重要成员绝大部分为方法,使用 Get-Member 显示这些方法。

<!----><!----><!---->请注意: <o:p></o:p>

System.Math 中有几种方法同名,但通过它们使用的参数类型可进行区分。<o:p></o:p>

键入以下命令可列出 System.Math 类中的方法

PS> [System.Math] | Get-Member -Static -MemberType Methods<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

TypeName:System.Math<o:p></o:p>

<o:p> </o:p>

Name                       MemberType Definition<o:p></o:p>

----            ---------- ----------<o:p></o:p>

Abs             Method     static System.Single Abs(Single value), static Sy...<o:p></o:p>

Acos            Method     static System.Double Acos(Double d)<o:p></o:p>

Asin            Method     static System.Double Asin(Double d)<o:p></o:p>

Atan            Method     static System.Double Atan(Double d)<o:p></o:p>

Atan2           Method     static System.Double Atan2(Double y, Double x)<o:p></o:p>

BigMul          Method     static System.Int64 BigMul(Int32 a, Int32 b)<o:p></o:p>

Ceiling         Method     static System.Double Ceiling(Double a), static Sy...<o:p></o:p>

Cos             Method     static System.Double Cos(Double d)<o:p></o:p>

Cosh            Method     static System.Double Cosh(Double value)<o:p></o:p>

DivRem          Method     static System.Int32 DivRem(Int32 a, Int32 b, Int3...<o:p></o:p>

Equals          Method     static System.Boolean Equals(Object objA, Object ...<o:p></o:p>

Exp             Method     static System.Double Exp(Double d)<o:p></o:p>

Floor           Method     static System.Double Floor(Double d), static Syst...<o:p></o:p>

IEEERemainder   Method     static System.Double IEEERemainder(Double x, Doub...<o:p></o:p>

Log             Method     static System.Double Log(Double d), static System...<o:p></o:p>

Log10           Method     static System.Double Log10(Double d)<o:p></o:p>

Max             Method     static System.SByte Max(SByte val1, SByte val2), ...<o:p></o:p>

Min             Method     static System.SByte Min(SByte val1, SByte val2), ...<o:p></o:p>

Pow             Method     static System.Double Pow(Double x, Double y)<o:p></o:p>

ReferenceEquals Method     static System.Boolean ReferenceEquals(Object objA...<o:p></o:p>

Round           Method     static System.Double Round(Double a), static Syst...<o:p></o:p>

Sign            Method     static System.Int32 Sign(SByte value), static Sys...<o:p></o:p>

Sin             Method     static System.Double Sin(Double a)<o:p></o:p>

Sinh            Method     static System.Double Sinh(Double value)<o:p></o:p>

Sqrt            Method     static System.Double Sqrt(Double d)<o:p></o:p>

Tan             Method     static System.Double Tan(Double a)<o:p></o:p>

Tanh            Method     static System.Double Tanh(Double value)<o:p></o:p>

Truncate        Method     static System.Decimal Truncate(Decimal d), static...<o:p></o:p>

<o:p> </o:p>

这将显示几种数学方法。此处的命令列表演示了一些常用方法的工作原理

PS> [System.Math]::Sqrt(9)<o:p></o:p>

3<o:p></o:p>

PS> [System.Math]::Pow(2,3)<o:p></o:p>

8<o:p></o:p>

PS> [System.Math]::Floor(3.3)<o:p></o:p>

3<o:p></o:p>

PS> [System.Math]::Floor(-3.3)<o:p></o:p>

-4<o:p></o:p>

PS> [System.Math]::Ceiling(3.3)<o:p></o:p>

4<o:p></o:p>

PS> [System.Math]::Ceiling(-3.3)<o:p></o:p>

-3<o:p></o:p>

PS> [System.Math]::Max(2,7)<o:p></o:p>

7<o:p></o:p>

PS> [System.Math]::Min(2,7)<o:p></o:p>

2<o:p></o:p>

PS> [System.Math]::Truncate(9.3)<o:p></o:p>

9<o:p></o:p>

PS> [System.Math]::Truncate(-9.3)<o:p></o:p>

-9<o:p></o:p>

你可能感兴趣的:(windows,工作,Microsoft,powershell)