溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PowerShell直接調(diào)用.net靜態(tài)類和方法

發(fā)布時間:2020-07-05 16:28:09 來源:網(wǎng)絡(luò) 閱讀:693 作者:zengchuixin2008 欄目:系統(tǒng)運(yùn)維

不是所有 .NET Framework 類都可使用 New-Object 來創(chuàng)建。 例如,如果你嘗試使用 New-Object 創(chuàng)建 System.Environment 或 System.Math 對象,你將收到以下錯誤消息:

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

之所以發(fā)生這些錯誤,是因?yàn)闊o法從這些類創(chuàng)建新的對象。 這些類是不更改狀態(tài)的方法和屬性的引用庫。 你無需創(chuàng)建這些類,只需要使用它們。 這樣的類和方法稱為靜態(tài)類,因?yàn)樗鼈儾粫粍?chuàng)建、銷毀或更改。

System.Environment 類包含關(guān)于當(dāng)前進(jìn)程工作環(huán)境的一般信息,如果是在 Windows PowerShell 內(nèi)工作,該進(jìn)程為 powershell.exe。

如果嘗試通過鍵入 [System.Environment] | Get-Member 來查看此類的詳細(xì)信息,對象類型將報告為 System.RuntimeType,而不是 System.Environment:

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

該類型的使用方式示例如下:

[System.Environment]::Commandline
[System.Environment]::OSVersion
[System.Environment]::HasShutdownStarted

另外我們還可以使用另外一種靜態(tài)的類進(jìn)行數(shù)學(xué)運(yùn)算(System.Math)

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

使用get-member可以查看到該靜態(tài)類支持的運(yùn)算方法:

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

您也可以關(guān)注下方的微信公眾號獲取更多內(nèi)容
PowerShell直接調(diào)用.net靜態(tài)類和方法

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI