我正在尝试检查证书,然后将其删除(如果该证书存在于用户的本地计算机存储中)。我试过这个:
$certCN = 'test.domain.com'
Set-Location Cert:\LocalMachine\My
$oldCert = Get-ChildItem -Recurse |
Where-Object { $_.subject -like "CN=$oldCert*" }
Remove-Item Cert:\LocalMachine\My\$oldCert -Force
Run Code Online (Sandbox Code Playgroud)
但它并没有从商店中删除证书或给出任何错误(是的,我正在运行此提升)。
我检查了我的$oldCert变量以查看它是否已填充,它是:
PS Cert:\LocalMachine\My> $oldcert
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint Subject
---------- -------
276B7B87740D5E9595A258060F5CD9CC4190E9E1 CN=test.domain.com, <truncated>
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?对此,我真的非常感激。
您遇到的问题是驱动器X509Certificate2中对象的自动字符串转换Cert:\。当您将其附加到路径中时-Path some\path\$myobj,它会隐式调用ToString该对象。您可以通过"some\path\$myobj"在控制台上执行操作(无需任何其他代码)或简单地调用 来观察这一点$myobj.ToString()。
因为Remove-Item通过属性名称获取管道输入,所以当您通过管道传递对象时,它会自动从对象中拉出路径,因此您可以像这样简单地修复您的问题:
$oldCert | Remove-Item
Run Code Online (Sandbox Code Playgroud)
或者
Remove-Item -LiteralPath $oldCert.PSPath
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8891 次 |
| 最近记录: |