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

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

不是所有的 .NET Framework 类都可使用 New-Object 进行创建。例如,如果尝试使用 New-Object 创建 System.EnvironmentSystem.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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值