默认情况下,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)'