将字符串转换为数据类型以存储在哈希表中

时间:2019-07-02 02:13:20

标签: powershell

我的代码中有类似的内容:

 [MVPSI.JAMS.CredentialRights]::Submit

我希望能够对其进行抽象,以便可以有效地更改它的一部分,以使它成为字符串:

$typeName = "MVPSI.JAMS.CredentialRights"
$function = "Submit"

但是我不能这样做:

$typeName::$function

我该怎么做?公平地说,我什至不知道在.Net \ PowerShell中这些特殊的[]::被称为什么。

2 个答案:

答案 0 :(得分:7)

  

我什至不知道.Net \ PowerShell中这些特殊的[]和::是什么

  • [...]分隔类型文字;例如[MVPSI.JAMS.CredentialRights]

  • ::访问类型的静态成员

请注意,这两种语法形式均特定于 PowerShell

使用类型文字的替代方法是将类型名称(字符串)广播到[type]

# The type name as a string.
$typeName = 'MVPSI.JAMS.CredentialRights'

# Get a reference to the type by its name.
$type = [type] $typeName

# The name of the static method to call.
$function = 'Submit'

# Call the static method on the type by its name.
# Note: Omitting '()' will output the method *signature*, including
#       its overloads.
$type::$function()

答案 1 :(得分:2)

请勿在$ typeName周围使用引号,因为您正在定义字符串而不是引用MVPSI.JAMS.CredentialRights类。请改用方括号。

$typeName = [MVPSI.JAMS.CredentialRights]
$function = "Submit"
$typeName::$function()

我相信::是对给定类中的函数的静态调用。