編寫一個.ps1 powershell腳本,我想知道如何找到用戶傳遞了多少個參數。例如,我需要我的程序來處理檢查多個文件中的字符串。因此,用戶應該能夠在Powershell如何計算參數的數量
./Script "a" ex1.txt
或
./Script "a" ex1.txt ex2.txt
我知道在bash我們可以使用$#
鍵入但我怎麼在PowerShell中進行檢查。謝謝
編寫一個.ps1 powershell腳本,我想知道如何找到用戶傳遞了多少個參數。例如,我需要我的程序來處理檢查多個文件中的字符串。因此,用戶應該能夠在Powershell如何計算參數的數量
./Script "a" ex1.txt
或
./Script "a" ex1.txt ex2.txt
我知道在bash我們可以使用$#
鍵入但我怎麼在PowerShell中進行檢查。謝謝
在腳本或函數中,您可以通過自動填充的變量$args
訪問傳入的參數。 $args
是一個數組,因此您可以找到通過其Count
屬性傳遞的參數數量。
一個例子:
function PrintArgs()
{
Write-Host "You passed $($args.Count) arguments:"
$args | Write-Host
}
調用PrintArgs
:
> PrintArgs 'a' 'b' 'c'
You passed 3 arguments:
a
b
c
您使用內置$Args
和它的屬性Count
。
$Args.Count
這會給你多少個用戶傳遞給腳本的參數。
Read through a few help files如果你有時間;他們通常非常有幫助!從幫助
get-help *
get-help *parameters*
get-help about_Parameters
get-help about_Automatic_Variables
get-help about_Functions*
#etc...
筆記應該可以幫助您:
的$ args
包含傳遞給函數,腳本未申報的參數和/或參數 值的數組,或腳本塊。 創建函數時,可以通過使用 param關鍵字或在函數名稱後面添加 圓括號中逗號分隔的參數列表來聲明參數。
在事件操作中,$ Args變量包含的對象代表正在處理的事件的事件參數 。僅在事件註冊 命令的操作塊中填充此變量 。此變量的值也可以在Get-Event返回的PSEventArgs對象(System.Management.Automation.PSEventArgs) 的SourceArgs 屬性中找到。
$ PSBoundParameters
包含傳遞給腳本 或功能及其當前值的參數的字典。在聲明參數的作用域中,此變量的值僅爲 ,例如腳本或函數。 您可以使用它來顯示或更改參數 的當前值或將參數值傳遞給另一個腳本或函數。
如果你最終使用兩個參數綁定和非綁定的參數,你可以稍微將二者結合起來(example)
題外話:
我強烈建議不要使用的$ args。你應該總是使用綁定參數,當你被迫不使用綁定參數的情況很少。
爲什麼?所有帶參數的函數都應遵循最佳實踐,並使用param()塊作爲參數。如果您閱讀幫助文件中的參數,您會發現使用param塊可以爲您提供各種有用的功能,如驗證,強制強制參數,接受管道輸入等。在讓PowerShell執行均勻更多的工作與你[cmdletbinding()]
乾杯!
假設您的腳本被一個或多個開關參數調用,$ args.Count爲0.使用$ PSBoundParameters作品,請參閱Cookie Monster的答案。 –