
Minha máquina local existe em um domínio em uma floresta separada da floresta que administro. Como resultado, uso extensivamente PSSessions. Embora eu tenha conseguido criptografar minhas credenciais e salvá-las em meu perfil em minha máquina local, tentei criptografar minhas credenciais e salvá-las em meu perfil na máquina remota e usá-las quando estiver dentro de uma sessão do PowerShell. Abaixo está um exemplo:
PS C:\WINDOWS\system32> etsn -computer 192.168.1.2 -cr $mycred
[192.168.1.2]: PS C:\Users\challer\Documents> get-aduser -server dc01.domain.local -filter * -cr $mycred
Depois de inserir este comando, recebo o seguinte pop-up:
"Aviso: um script ou aplicativo no computador remoto 192.168.1.2 está solicitando suas credenciais. Insira suas credenciais somente se você confiar no computador remoto e no aplicativo ou script que as está solicitando."
Uma credencial pode ser criptografada, salva, armazenada em um servidor remoto e acessada de dentro de uma PSSession? Ou uma credencial criptografada armazenada localmente pode ser transmitida para uma PSSession?
Responder1
O problema é o fato de que a sessão remota não consegue ler sua variável local. Você pode definir variáveis facilmente antes de você Enter-PSSession
e usá-las posteriormente em uma sessão remota:
$Session = New-PSSession -ComputerName dc01.domain.local -Credential $mycred
Invoke-Command -Session $Session -ScriptBlock {
$mycredRemote = $args[0]
} -ArgumentList $mycred
Enter-PSSession -Session $Session
A partir deste ponto, $mycredRemote
contém suas credenciais.
Responder2
Tente isto, ele inverte o SecureString para texto não criptografado, local e remotamente:
$mycred=Get-Credential
$remote = ($env:LOGONSERVER).Replace('\\','')
echo $mycred.Username
echo ([System.Runtime.InteropServices.marshal]::PtrToStringAuto(
[System.Runtime.InteropServices.marshal]::SecureStringToBSTR(($mycred.Password))))
$Session = New-PSSession -ComputerName $remote -Credential $mycred
Invoke-Command -Session $Session -ScriptBlock {
$mycredRemote = $args[0]
echo $mycredRemote.Username
echo ([System.Runtime.InteropServices.marshal]::PtrToStringAuto(
[System.Runtime.InteropServices.marshal]::SecureStringToBSTR(($mycredRemote.Password))))
} -ArgumentList $mycred
Enter-PSSession -Session $Session