Estou pensando em automatizar uma maneira de executar essa tarefa:
Implementamos imagens do Windows Server 2008 R2 para nossos clientes. Usamos o PowerShell (versão 2) para implantar nosso software proprietário e fazer várias outras alterações no sistema antes do envio. Este processo do PowerShell é executado sob a conta de Administrador local até que ele conclua e desabilite a conta de Administrador local.
Agora, para o problema - estou tentando instalar um certificado de cliente .PFX em um repositório de certificados CurrentUser \ My de um usuário SEPARADO. Vamos chamar esse usuário "SQL".
Neste momento, o certificado está sendo instalado no armazenamento de certificados LocalMachine \ My, mas uma de nossas equipes de desenvolvimento tem preocupações com essa posição e gostaria de replicar a configuração original.
Agora, eu sei como acabar com isso adicionando um passo de reinicialização ao nosso script de implantação e tendo isso executado sob o usuário "SQL", mas eu gostaria de evitar isso, pois parece que tem que haver um maneira de fazer isso enquanto estiver sob outra conta. Aqui está o código básico que estamos usando agora para instalar o certificado na loja LocalMachine \ My. Assuma que $ certPath é o caminho para o .pfx e $ pfxPass é a senha do .pfx.
function Import-PfxCertificate {
param([string] $certPath, [string]$pfxPass)
$pfx = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import([string]$certPath, [string]$pfxPass, "Exportable,PersistKeySet")
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My", "LocalMachine")
$store.open("MaxAllowed")
$store.add($pfx)
$store.close()
}