我正在嘗試撰寫一個列印出所有引數的 PowerShell 函式。
ArgChecker.ps1
function Print-Args
{
[CmdletBinding()]
param ([string[]]$words)
Write-Verbose "Count: $($words.Count)"
Write-Output "Passed arguments:"
$words
}
我還想從命令提示符呼叫它。
我這樣做
powershell -ExecutionPolicy Bypass -command "& { . .\ArgChecker.ps1; Print-Args 'hi' 'Two' -Verbose }"
但它拋出了一個錯誤Print-Args : A positional parameter cannot be found that accepts argument 'Two'。
有什么方法可以撰寫函式,以便它可以接受該格式的無限數量的引數?我想我正在尋找類似于paramsC# 關鍵字的東西。
uj5u.com熱心網友回復:
在常規函式中,您可以使用$args自動變數。
function Write-Args {
$args
}
如果需要帶有 的 cmdlet CmdletBinding,可以使用ValueFromRemainingArguments選項:
function Write-Args {
[CmdletBinding()]
param(
[Parameter(ValueFromRemainingArguments)]
[string[]]$Arguments
)
$Arguments
}
但是請注意,由于CmdletBinding,-Verbose不會出現在該串列中,因為它是一個通用引數。如果您也想列出這些,您可以使用$PSBoundParameters自動變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/347606.html
下一篇:如何在批處理腳本中列印
