如何创建区分大小写的哈希表而不生成PSScriptAnalyzer警告?

问题描述 投票:1回答:1

默认情况下,PowerShell创建的哈希表(例如$hashtable = @{})不区分大小写。

对于我的脚本,我想显式创建区分大小写哈希表。

这可以通过:

$hashtable = [hashtable]::new()

或:

$hashtable = New-Object hashtable

但是我想让我的脚本也符合默认的PSScriptAnalyzer规则。对于以上区分大小写的哈希表示例,UseLiteralInitializerForHashtable规则会显示警告:

使用文字初始化程序@@ {{}},因为默认情况下不区分大小写,因此创建哈希表

我希望能够通过指定StringComparer来解决此问题,例如:

[HashTable]::New(0, [StringComparer]::Ordinal)

但是这仍然会产生错误(尽管[HashTable]::New(0, [StringComparer]::OrdinalIgnoreCase)不会)。AFAIK,没有类似内容:[StringComparer]::OrdinalMatchCase或?

如何在不生成PSScriptAnalyzer警告的情况下创建区分大小写的哈希表?

PSScriptAnalyzer版本:1.18.3测试了Windows PowerShell(5.1)和PowerShell Core(6.2.3

重现警告的步骤:

Invoke-ScriptAnalyzer -ScriptDefinition '[HashTable]::New(0, [StringComparer]::Ordinal)'
powershell hashtable case-sensitive psscriptanalyzer
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.