淺談變量與對象,PowerShell小白5分鐘教程

腳本語言 Windows 技術 薰薰熊 2017-06-08

PowerShell是構建在.NET框架之上的,所有的內在信息都是遵從.NET對象的格式,將信息和相關的函數封裝。管道傳遞的信息就是對象,本文為大家介紹變量和對象的基礎使用方法,純小白教程,讓你五分鐘掌握變量與對象的簡單使用。

1.使用變量存儲信息

使用變量可以把一個管道或命令的輸出保存下來後續使用,PowerShell中的變量用$符號作為開始,幾乎可以使用任意字符作為變量的名稱:

淺談變量與對象,PowerShell小白5分鐘教程

Note:如果保存了大量的數據到一個變量中,以後不用了,則需要給變量賦值$null,用以釋放內存空間。

變量名字也可以帶特殊字符,但是使用時需要加上{},如下:

淺談變量與對象,PowerShell小白5分鐘教程

2.使用環境變量

PowerShell提供瞭如下幾種方法來訪問環境變量(如獲取系統路徑或當前用戶名稱)

  • 獲取所有環境變量:Get-ChildItem env:

淺談變量與對象,PowerShell小白5分鐘教程

  • 獲取某一個變量:

淺談變量與對象,PowerShell小白5分鐘教程

3.定義變量的作用域

有時候需要控制變量的可用範圍,為了在指定的範圍內創建變量,在變量的名稱前面需要提供SCOPE關鍵字,訪問指定範圍內的變量,在變量的前面提供範圍:

定義:$SCOPE:variable = value

訪問:$SCOPE:variable

一共有三個可用的SCOPE關鍵字:

  • Global:全局範圍,在此範圍內的變量對其他範圍來說都是可見的;

  • Script:代表當前腳本範圍,此範圍內的變量對於其他腳本內的範圍都是可見的;

  • Local:當前範圍

淺談變量與對象,PowerShell小白5分鐘教程

4.使用.NET對象

如何使用PowerShell提供的內在支持的、功能強大的.NET對象。

  • 調用一個類的靜態方法:[ClassName]::MethodName(parameter list)

  • 調用一個對象的普通方法:$object.MethodName(parameter list)

  • 訪問一個類的靜態屬性:[ClassName]::PropertyName

  • 訪問一個對象的普通屬性:$object.PropertyName

淺談變量與對象,PowerShell小白5分鐘教程

5.創建一個.NET對象實例

使用New-Object命令來創建一個對象的實例:

淺談變量與對象,PowerShell小白5分鐘教程

默認情況下,PowerShell只會加載最常用的類型。當然,還有一些類需要你加載對應的類庫文件後才可用。

為了加載一個類庫,使用System.Reflection.Assembly類提供的方法來加載:

淺談變量與對象,PowerShell小白5分鐘教程

Note:LoadWithPartialName方法不適合在腳本或產品發佈時使用,原因是它默認加載最新版本的庫文件,安全的方法是使用[Reflection.Assembly]::Load()加上完整的名稱來加載。

6.快速輸入較長的類名

當在腳本文件中使用具有較長命名的類的時候,可以把類名保存到一個變量中,方便下次使用:

淺談變量與對象,PowerShell小白5分鐘教程

可以使用-f操作符,格式化命名空間字符串:

淺談變量與對象,PowerShell小白5分鐘教程

查看兩個變量的類型如下:

淺談變量與對象,PowerShell小白5分鐘教程

7.查找如何使用類型和對象

如果知道一個類型,可以使用MSDN去查找,或者使用Get-Member命令查找使用方法:

淺談變量與對象,PowerShell小白5分鐘教程

如果只有對象,可以使用GetType()方法獲取類型,後再用上述方法查找使用方法,或者直接Get-Member:

淺談變量與對象,PowerShell小白5分鐘教程

8.向對象添加自定義方法和屬性

可以通過Add-Member命令向對象添加自定義的成員:

淺談變量與對象,PowerShell小白5分鐘教程

可以使用Get-Help Add-Member查詢更詳細的使用方法。

9.向類添加自定義方法和屬性

可以使用自定義的類型擴展文件(custom type extension files),向一個類中的所有對象添加成員。

比如我要給所有的DateTime類型添加一個腳本屬性IsLeapYear,來表示這個DateTime的年是否是閏年,操作步驟如下:

  • 在PowerShell默認根目錄下創建一個空的類擴展文件”Types.Bob.ps1xml”;

  • 在裡面添加如下代碼:

淺談變量與對象,PowerShell小白5分鐘教程

  • 在PowerShell根目錄下執行如下命令:

PS C:\Windows\System32\WindowsPowerShell\v1.0> $typeFile = (Join-Path $pshome "Types.Bob.ps1xml")

PS C:\Windows\System32\WindowsPowerShell\v1.0> Update-TypeData -PrependPath $typeFile

  • 最後就可以獲取IsLeapYearDay屬性了:

淺談變量與對象,PowerShell小白5分鐘教程

淺談變量與對象,PowerShell小白5分鐘教程

[本人原創文章,僅供學習研究之用,如有錯誤請留言,如覺得不錯請推薦分享,謝謝支持]

[更詳細的內容請參考:本人博客園——薰薰熊的技術分享社區 by 永遠薰薰]

相關推薦

推薦中...