腳本所體現(xiàn)的是PowerShell的編程特性,是任務自動化的基礎。函數(shù)是比腳本粒度更細的代碼復用單元,可以定義在命令行中或者腳本中。作用域就是變量和函數(shù)的作用范圍,是執(zhí)行上下文的劃分。
函數(shù)
函數(shù)就是命名的命令列表,與一般編程語言中的函數(shù)概念具有相同的范疇。函數(shù)中不但可以有簡單命令,還可以有控制流程的命令,如if、while、switch等。函數(shù)可以有匿名參數(shù)或者命名參數(shù)列表。命令參數(shù)列表可以用大括號或者Param關鍵字定義。匿名函數(shù)可以使用$Args變量來訪問。函數(shù)也可接收來自管道的對象作為輸入,管道對象可以通過$input變量類訪問。
在腳本中定義的函數(shù),可以定義在#require命令和Param關鍵字之后的任何位置,但要定義在調(diào)用之前。還有,自定義的函數(shù)不會自動運行,需要被明確調(diào)用。可以使用filter或者function定義函數(shù),用filter關鍵字定義的函數(shù)比較簡單,而使用function關鍵字定義的函數(shù)可以有更加復雜的功能。
簡單函數(shù)定義示例如下:
代碼如下:
function SayHello
{
"Hello"
}
函數(shù)調(diào)用方法與使用Cmdlet方法相似,輸入SayHello,并回車。則結果為Hello。
腳本
腳本就是將一些命令存貯到文件文件中,并將該文本文件的擴展名設置為.ps1。腳本中除了可以使用常用cmdlet,控制流程的命令外,還可以定義和調(diào)用自定義函數(shù),調(diào)用方法與調(diào)用cmdlet方法類似。
腳本也可以有參數(shù),既可以是命名參數(shù)也可以是匿名參數(shù)。在參數(shù)的使用上,腳本與函數(shù)非常相似。
另外,PowerShell的腳本執(zhí)行策略默認不允許執(zhí)行任何腳本文件,修改執(zhí)行策略可執(zhí)行如下命令:Set-ExecutionPolicy RemoteSigned。需要謹記的是,修改執(zhí)行策略會帶來安全隱患,修改執(zhí)行策略之前請三思。
簡單腳本d:/greet.ps1示例如下
代碼如下:
Param([String] somebody)
function Greet([String] name)
{
"Hello $name"
}
echo "Call function Greet ..."
Greet $somebody
腳本調(diào)用方法如下:
代碼如下:
d:/greet.ps1 "Luke"
或
代碼如下:
./greet.ps1 "Luke"
以上腳本的執(zhí)行結果是,“Hello Luke”。
作用域
按類型分,有兩種作用域:global(全局作用域)和script(腳本作用域)。啟動PowerShell命令行后,所有命令行命令在全局作用域中運行。而腳本上下文在script作用域中運行,運行結束后腳本中定義的變量和函數(shù)不在可見。這是因為在腳本中定義的變量和函數(shù)默認位于script作用域中。當然也可以顯示定義變量和函數(shù)的作用域,比如function global:fun1 (){…}。這樣以來,腳本執(zhí)行完之后,fun1還能夠在全局作用域中執(zhí)行。
新聞熱點
疑難解答
圖片精選