您好Rockson Lee,
欢迎在Q&A论坛发帖。
微软为PowerShell提供了PKI模块,里面包含了用于PKI客户端的命令。
https://learn.microsoft.com/en-us/powershell/module/pki/?view=windowsserver2022-ps
另外也有一些第三方的模块,提供了更多的命令,比如PSPKI
https://www.powershellgallery.com/packages/PSPKI/4.2.0
但是由于用户环境的不同,并没有一套全程的脚本来对应在mmc中可能的每一个操作。某些操作要用脚本实现可能依然需要自己去利用现有的命令去完成。
比如上面帖子中提到的管理私钥权限,实际是设置私钥文件的访问控制列表ACL,这个可以通过Set-Acl命令操作,但这个不是PKI的命令。
比如我在本地计算机的个人下有一个指纹为8FA82424885864C8E0A244C520AA2B57F491ACC0的证书,想要对私钥允许network service完全控制,那么可以这么做
$Cert = Get-Item -Path Cert:\LocalMachine\My\8FA82424885864C8E0A244C520AA2B57F491ACC0
$PrivateKey =[System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($Cert)
$KeyFileName = $PrivateKey.key.UniqueName
$KeyFilePath = "$env:ALLUSERSPROFILE\Microsoft\Crypto\Keys\$KeyFileName"
$Acl = Get-Acl -Path $KeyFilePath
$Ace = [System.Security.AccessControl.FileSystemAccessRule]::new("NT AUTHORITY\NETWORK SERVICE","FullControl","Allow")
$Acl.AddAccessRule($Ace)
Set-Acl -Path $KeyFilePath -AclObject $Acl
祝好
Ian Xue
如果回答是有帮助的,请点击"接受答案"。