PowerShell自定義函數定義及調用


PowerShell是一種命令集,也有自己的語法定義及函數。本文主要介紹如何自定義powershell函數及如何調用,當初在寫PowerShell自定義函數的時候查閱了很多資料都沒找到如何調用自定義函數,還是無意中從同事以前寫的腳本中才知道方式奇特的PowerShell函數調用方式,以此記錄下來,以方便后續參考。

PowerShell腳本語言和其他語言一樣,powershell自定義函數也是以function打頭,申明方式如下:

function(關鍵字) 函數名 (參數) {代碼}

例如定義一個實現兩數相加的函數

function Add ($x,$y) 
{ 
    $n = $x + $y 
    Write-Host $n
}
View Code

其實自定義函數很容易,只需要知道powershell基本語法就可以了,但是調用自定義函數就沒有其他語言方便了,在調用自定義函數之前必須得告訴編譯器函數存放的文件地址及名稱,這樣編譯器才知道調用哪里的函數,其實也很容易理解。

具體調用方式如下:

. ($path + "functionDemo.ps1")
  Add 2 3

這里$path為函數Add的絕地路徑,functionDemo.ps1為函數所在的ps1文件名稱,而自定義調用方式也和其他語言函數調用大不相同,格式為 函數名 第一參數 第二參數。請注意中間沒有逗號,也沒有括號,但是對於非自定義函數則必須使用括號

如何讓powershell知道ps1文件存放的位置絕對位置呢,也就是這里的$path是怎么定義的。

一般我們不會去在ps1文件中寫名絕對地址,例如在本例中也就是我們不會給$path賦值為C:\folder,而是讓編譯器運行本腳本的時候自動得到該文件的絕對地址,這樣無論部署的時候將ps1文件放到哪里,都不需要更改任何設置。下面是獲得powershell文件的絕對地址代碼片段:

$0 = $MyInvocation.MyCommand.Definition 
$dp0 = [System.IO.Path]::GetDirectoryName($0)

Write-Host $dp0
View Code

例子中會打印出執行該文件的文件絕對地址,如:“C:\Documents and Settings\Administrator\Desktop\Installation\installSTP”

這里GetDirectoryName就是非自定義函數,調用方式需要加括號。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM