当出于安全原因在环境中禁用WinRM时,如何使用Powershell将证书导入远程系统上的证书存储区。我尝试了一些变通方法,但都失败了。请放心,我是新手。
我已经尝试过这个作为一个工作周围,是的,我知道它的不可信的商店。
$cert = getchilditem -path "SharePath.cer"
$server = Get-content ".\servers.txt"
$server | foreach { $cert | import-certificate -CertStoreLocation Cert:LocalMachine\Disallowed
1条答案
按热度按时间kyks70gy1#
将证书部署到计算机可能最好通过Group Policy来完成,因为它是一个更加健壮和易于使用的过程。
也就是说,如果您不能使用组策略,您可以根据目标系统的操作系统使用其他几种解决方案中的一种。
Boe Prox wrote an Import-Certificate函数和说明,在幕后使用.Net允许在没有WinRM或早于Windows 10的远程计算机上导入。使用他的解决方案,您可以执行以下操作:
如果你使用的是Windows 10,你可以使用内置的Import-Certificate,但这只适用于本地系统,所以你需要用Invoke-Command Package 它(这需要WinRM),或者您可以回退到Invoke-WMIMethod。使用或处理输出时,它几乎没有那么友好,但它会起作用。这是一个在没有WinRM的远程计算机上执行函数的工作示例。对于复杂的命令,您将需要使用-EncodedCommand parameter of powershell.exe。
将证书复制到远程系统以避免2跳问题
对要使用的命令进行编码
在远程计算机上生成进程
您将在计算机上获得类似于以下内容的输出
请注意,返回值0表示成功,这仅表示派生了powershell,而不是您执行的命令成功。如果您想要一些日志记录,则需要将其保存到您编码的命令中
编辑:Foreach-Object和Get-Content
请不要将此复制/粘贴到生产环境中。阅读它并了解正在发生的事情。使用函数的ISE to debug部分,并将其一点一点地拼凑起来。