避免使用位置參數

嚴重性層級:資訊

Description

此規則偵測指令是否使用三個或以上位置參數而非命名參數。 使用位置參數會降低程式碼可讀性,並可能引入錯誤。 未來版本的指令長可能會改變,導致依賴參數位置的現有腳本失效。

對於僅有少數位置參數的簡單指令檔,風險較低。 為了避免這條規則過於雜訊,不要提供三個或以上的參數。 一個簡單例子, Test-Path $Path其使用位置參數的風險可忽略不計。

呼叫指令時請使用完整的參數名稱。

Example

不合規

Get-Command ChildItem Microsoft.PowerShell.Management

Compliant

Get-Command -Noun ChildItem -Module Microsoft.PowerShell.Management

設定規則

Rules = @{
    PSAvoidUsingPositionalParameters = @{
        CommandAllowList = 'Join-Path', 'MyCmdletOrScript'
        Enable           = $true
    }
}

Parameters

CommandAllowList

此參數指定了要排除在此規則之外的指令或腳本。 它接受字串陣列。 預設值為 @()

Enable

此參數控制 ScriptAnalyzer 是否會依照此規則檢查程式碼。 它接受一個布林值。 要停用此規則,請將此參數設為 $false。 預設值為 $true