好像你可以根据任何字符串设置有效的X509Store
对象。
例如。
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("abcdef")
我最初使用的是
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Cert:\CurrentUser\My")
认为我有My
商店的有效对象,但是在调用时我一直遇到异常:
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::MaxAllowed) #Exception calling "Open" with "1" argument(s): "The parameter is incorrect.
字符串是否采用某种格式?
编辑:
似乎字符串可以是任何东西,只要没有斜杠。所以我需要使用$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My")
。
答案 0 :(得分:1)
在咨询MSDN X509Store Class documentation后,这是我理解它的要点。
X509Store Class有许多构造函数。在定义了类的实例之后,可以使用Open方法打开它。
如果实例指向有效StoreLocation中的有效StoreName,则Open方法将打开证书存储。如果StoreLocation正确,Open方法还可以基于使用的标志[System.Security.Cryptography.X509Certificates.OpenFlags]创建新的存储。
如果未正确定义商店实例,则打开方法将生成System.ArgumentException。
有效的StoreLocation值为
且有效的StoreName值为
这就是MSDN对(String)构造函数的看法。
"使用此构造函数使用当前用户的特定X.509商店名称创建X509Store对象。要创建新商店,请指定不存在的名称。将使用该名称创建一个新商店。"
因此,此代码应在" CurrentUser"中创建新的证书存储区。叫做#34; abcdef"。
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("abcdef")
$openFlags = [System.Security.Cryptography.X509Certificates.OpenFlags]::MaxAllowed
$store.Open($openFlags)
可以使用MMC进行验证。
因此,总之,存储构造函数参数" StoreName"和"字符串"是可以互换的。语义上" StoreName"用于引用预定义值和" String"可以指任何价值。