【发布时间】:2015-03-26 17:40:54
【问题描述】:
我做错了什么?所有的网络都说“在证书提供程序中查找具有此 dns 名称的证书,使用命令 Get-ChildItem -Path Cert:\LocalMachine\My -DnsName "Will we ever know?" 并且瞧,它实际上在我的大多数机器上都可以使用。另外值得注意的是,Get-ChildItem -Path Cert:\LocalMachine\My 很高兴返回证书,它是特别是出现故障的过滤器。
但是对于我环境中的某些机器子类(我有很多机器要管理,因此通过 powershell 进行自动化),我得到了这个:
Get-ChildItem : A parameter cannot be found that matches parameter name 'DnsName'.
At line:1 char:43
+ Get-ChildItem -Path Cert:\LocalMachine\My -DnsName "what does the fox say" ...
+ ~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
请注意,我已对某些方面进行了匿名处理,因此此查询“按书面形式”不起作用,因为内部细节无关紧要。为什么我在此查询中得到 NamedParameterNotFound?
注意事项:
- 服务器 2008 R2
- .NET 4.5.1 已安装(今天之前)
- Powershell v4 安装(今天)
【问题讨论】:
-
“某些方面”是指“狐狸说什么”
-
在那些机器上是否有可能cert provider is not loaded?
-
对不起,我想评论一下:当我停止对 DnsName 参数的搜索时,我确实得到了 LocalMachine\My 中加载的所有证书的结果。让我更新帖子。
-
其他人建议
gci -Path Cert:\LocalMachine\My | Select DnsNameList在机器上也返回空可能表明没有加载适当的证书,因此在这台机器上没有什么要过滤的,这就是过滤器的原因(这是一个糟糕的设计,imo,但我可以忍受) -
您是否从该服务器上的 PowerShell v4 中的会话远程访问其他计算机?在 PSv4 之前,证书提供程序不会自动加载到每个会话中,因此如果您在另一台使用旧版本 powershell 的计算机上运行该命令,则针对 cert: drive 运行 Get-ChildItem 不会返回任何结果。
标签: powershell named-parameters get-childitem