PowerShell版本:5.x,6
我正在尝试创建System.Collections.Generic.Dictionary
的新对象,但是失败。
我尝试了以下“版本”:
> $dictionary = new-object System.Collections.Generic.Dictionary[[string],[int]]
New-Object : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'ComObject'. Specified method is not supported.
At line:1 char:25
+ ... ry = new-object System.Collections.Generic.Dictionary[[string],[int]]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-Object], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.NewObjectCommand
> $dictionary = new-object System.Collections.Generic.Dictionary[string,int]
New-Object : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'ComObject'. Specified method is not supported.
At line:1 char:25
+ ... ionary = new-object System.Collections.Generic.Dictionary[string,int]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-Object], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.NewObjectCommand
我知道我可以在PowerShell下使用哈希表,但是我想知道如何通过上述声明创建字典。
我想念什么?
Thx
答案 0 :(得分:1)
问题在于powershell如何解释您的论点。
当您在字符串中包含逗号时,它现在正在尝试绑定
'System.Collections.Generic.Dictionary[[string]', '[int]]'
输入-TypeName
类型的<string[]>
参数或错误消息<System.Object[]>
中的参数。这可以通过适当地引用您的参数以使其与<string>
的预期参数绑定相匹配来解决:
New-Object -TypeName 'System.Collections.Generic.Dictionary[[string], [int]]'
答案 1 :(得分:0)
使用的类型名称System.Collections.Generic.Dictionary[[string],[int]]
包含逗号。通过Creating and initializing an array:
要创建和初始化数组,请将多个值分配给 变量。数组中存储的值用分隔 逗号…
因此,您需要转义逗号(请阅读about_Escape_Characters和about_Quoting_Rules帮助主题)。还有更多选项:
在Windows PowerShell中,转义字符为反引号(
`
), 也称为重音符号(ASCII 96)。
$dictionary = new-object System.Collections.Generic.Dictionary[[string]`,[int]]
引号用于指定文字字符串。您可以附上 用单引号(
'
)或双引号组成的字符串 ("
。
$dictionary = new-object "System.Collections.Generic.Dictionary[[string],[int]]"
或
$dictionary = new-object 'System.Collections.Generic.Dictionary[[string],[int]]'