PowerShell入門教程之編寫和使用腳本模塊實(shí)例
現(xiàn)在通過編寫模塊就可以在PowerShell命令行或者腳本中管理大型、分布式軟件系統(tǒng),就像Exchange Server和SharePoint Server正在做的那樣。你有這樣的需求嗎?
模塊、腳本模塊
模塊是PowerShell V2中引入的概念,用以改進(jìn)之前提出的“管理單元”。將管理單元也作為模塊(二進(jìn)制模塊)處理之后,PowerShell中就包括兩種模塊——腳本模塊和二進(jìn)制模塊。那么什么是模塊呢?模塊就是包含一些PowerShell命令、項(xiàng)的程序包,它以一個(gè)整體被分發(fā)共享和加載使用。
腳本模塊是在PowerShell V2中與模塊一起提出的概念,它完全由PowerShell語(yǔ)法和環(huán)境編寫,不需要切換到其他編譯語(yǔ)言或者開發(fā)環(huán)境。腳本模塊是現(xiàn)在編寫PowerShell模塊時(shí)推薦的方法,要好好學(xué)哦。
編寫腳本模塊
編寫腳本模塊包括確定模塊路徑、創(chuàng)建模塊文件夾、編寫模塊文件和編寫Manifest文件等幾個(gè)方面,都非常容易操作,具體內(nèi)容如下:
模塊安裝路徑
理論上,模塊可以放在本機(jī)的任何位置,但是如果放在Env:\PSModulePath搜索范圍內(nèi),將會(huì)更加便于管理和使用。Env:\PSModulePath是與系統(tǒng)變量%Path%具有相同建模方式的變量,其變量值是由逗號(hào)分隔的路徑組成的字符串。雖然env:PSModulePath變量中有系統(tǒng)預(yù)定義的兩個(gè)目錄,但他們可能并未創(chuàng)建,需要在使用的時(shí)候創(chuàng)建。
可以用以下命令獲得兩個(gè)路徑:
PS C:\Users\luke> $paths = (dir Env:\PSModulePath).Value.Split(";")
PS C:\Users\luke> $paths
C:\Users\luke\Documents\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
檢查路徑是否已經(jīng)創(chuàng)建可以用如下命令:
PS C:\Users\luke> Test-Path -Path $paths[0]
False
以上返回False,則表示路徑未創(chuàng)建。創(chuàng)建路徑可使用文件瀏覽器、Cmd命令或者PowerShell命令。這里使用PowerShell命令如下:
New-Item -Path $paths[0] -ItemType directory -Force
這樣放置模塊所需要的路徑就創(chuàng)建好了,可以進(jìn)行下一步了。
模塊文件夾
模塊文件夾是模塊的一個(gè)組成部分,要與模塊具有相同的名字。模塊所包含的模塊文件、描述文件以及其他可能用到的腳本文件都要放在這個(gè)文件夾中。例如本文需要?jiǎng)?chuàng)建模塊ModuleDemo1,可以使用上述的new-item命令或者切換到腳本路徑之后使用md命令,即md ModuleDemo1。
腳本模塊文件
腳本模塊文件與一般的腳本文件內(nèi)容相似,只是后綴是.psm1而非.ps1,其文件名就是模塊的名字。不過,一般來說模塊中應(yīng)該只包含函數(shù)、別名、變量等的定義,不應(yīng)進(jìn)行很多操作或者輸出。ModuleDemo1.psm1的簡(jiǎn)單示例如下:
function Greet([String] name)
{
"Hello $name"
}
模塊描述文件
描述文件也稱為Manifest文件,擴(kuò)展名是.psd1,它的文件名也要與模塊相同。它的內(nèi)容實(shí)際上是一個(gè)Hashtable;不同的是,這個(gè)Hashtable中鍵的名字是系統(tǒng)預(yù)先定義的。腳本模塊文件的作用主要是限制運(yùn)行環(huán)境、設(shè)置依賴項(xiàng)和對(duì)腳本進(jìn)行一些描述。
創(chuàng)建和編輯模塊描述文件可以使用任何文本編輯器,但首次使用推薦使用命令進(jìn)行。創(chuàng)建模塊描述文件的命令如下:
PS C:\Users\luke\Documents\WindowsPowerShell\Modules\ModuleDemo1> New-ModuleManifest -Path .\ModuleDemo1.psd1
cmdlet New-ModuleManifest at command pipeline position 1
Supply values for the following parameters:
NestedModules[0]:
Author: Luke Zhang
CompanyName: CaiJu
Copyright:
ModuleToProcess: ModuleDemo1
Description: Demo1
TypesToProcess[0]:
FormatsToProcess[0]:
RequiredAssemblies[0]:
FileList[0]:
這樣模塊描述文件就創(chuàng)建好了,詳細(xì)信息可以打開文件編輯。
使用腳本模塊
腳本模塊編寫好以后就可以使用了,加載使用腳本模塊文件主要利用Get-Module命令和Import-Module命令。執(zhí)行如下命令就能顯示出我們剛剛編寫的模塊:
PS D:\> Get-Module -ListAvailable
ModuleType Name ExportedCommands
---------- ---- ----------------
Manifest ModuleDemo1 {}
Manifest ADRMS {}
Manifest AppLocker {}
Manifest BestPractices {}
Manifest BitsTransfer {}
Manifest PSDiagnostics {}
Manifest ServerManager {}
Manifest TroubleshootingPack {}
Manifest WebAdministration {}
然后導(dǎo)入我們剛剛編寫的模塊:
PS D:\> Import-Module -Name ModuleDemo1
導(dǎo)入之后,模塊中定義的Geet函數(shù)就可以使用了:
PS D:\> Greet "Luke"
Hello Luke
如果模塊中還定義了其他別名、變量等,也都可以使用。
結(jié)語(yǔ)
模塊不但是大型軟件腳本化管理的高效解決方案,也是共享PowerShell命令的好辦法。它是PowerShell程序員為數(shù)不多的展示工作成果的方式之一,而且是其中最專業(yè)化的方式。所以,玩兒轉(zhuǎn)模塊,秀給所有人看。
相關(guān)文章
Powershell小技巧之使用Copy-Item添加程序到開機(jī)啟動(dòng)
本文主要記錄了本人安裝office2013后遇到的一個(gè)小需求,然后用powershell實(shí)現(xiàn)了這個(gè)功能,特此記錄下,并附上copy-item的使用方法2014-09-09PowerShell腳本實(shí)現(xiàn)創(chuàng)建桌面快捷方式的方法
這篇文章主要介紹了PowerShell腳本實(shí)現(xiàn)創(chuàng)建桌面快捷方式的方法,本文通過調(diào)用WScript腳本組件實(shí)現(xiàn),需要的朋友可以參考下2014-08-08PowerShell中運(yùn)行CMD命令的技巧總結(jié)(解決名稱沖突和特殊字符等問題)
這篇文章主要介紹了PowerShell中運(yùn)行CMD命令的技巧總結(jié)(解決名稱沖突和特殊字符等問題),需要的朋友可以參考下2014-05-05Windows Powershell Switch 語(yǔ)句
如果語(yǔ)句中有多路分支,使用IF-ELSEIF-ELSE不友好,可以使用Switch,看起來比較清爽一點(diǎn)。2014-10-10Windows Powershell排序和分組管道結(jié)果
本文通過實(shí)例,詳細(xì)介紹了Powershell如何對(duì)管道結(jié)果進(jìn)行排序和分組,非常的實(shí)用,有需要的朋友可以參考下2014-09-09Powershell中請(qǐng)求WebServices并以JSON格式輸出結(jié)果
這篇文章主要介紹了Powershell中請(qǐng)求WebServices并以JSON格式輸出結(jié)果,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03Powershell小技巧之獲取當(dāng)前的時(shí)間并轉(zhuǎn)換為時(shí)辰
這篇文章主要介紹了使用Powershell獲取當(dāng)前的時(shí)間并轉(zhuǎn)換為時(shí)辰的方法,非常簡(jiǎn)單實(shí)用,有需要的朋友可以參考下2014-09-09PowerShell函數(shù)參數(shù)設(shè)置為即可選又必選的方法
這篇文章主要介紹了PowerShell函數(shù)參數(shù)設(shè)置為即可選又必選的方法,也就是帶有判斷功能,在某個(gè)情況下變?yōu)榭上葏?shù),在某種情況下又是必選參數(shù),需要的朋友可以參考下2014-07-07Powershell直接腳本時(shí)出現(xiàn)無法加載文件因?yàn)榻箞?zhí)行腳本
Powershell直接腳本時(shí)出現(xiàn)無法加載文件因?yàn)樵诖讼到y(tǒng)中禁止執(zhí)行腳本,有關(guān)此問題的解決方法如下2014-08-08