
Mi máquina local existe en un dominio en un bosque separado del bosque que administro. Como resultado, uso mucho PSSessions. Si bien pude cifrar mis credenciales y guardarlas en mi perfil en mi máquina local, intenté cifrar mis credenciales y guardarlas en mi perfil en la máquina remota y usarlas una vez que esté dentro de una sesión de PowerShell. A continuación se muestra un ejemplo:
PS C:\WINDOWS\system32> etsn -computadora 192.168.1.2 -cr $mycred
[192.168.1.2]: PS C:\Users\challer\Documents> get-aduser -server dc01.domain.local -filter * -cr $mycred
Después de ingresar este comando, aparece la siguiente ventana emergente:
"Advertencia: una secuencia de comandos o una aplicación en la computadora remota 192.168.1.2 solicita sus credenciales. Ingrese sus credenciales solo si confía en la computadora remota y en la aplicación o secuencia de comandos que las solicita".
¿Se puede cifrar, guardar, almacenar una credencial en un servidor remoto y acceder a ella desde una PSSession? ¿O se puede pasar una credencial cifrada almacenada localmente a una PSSession?
Respuesta1
El problema es el hecho de que esa sesión remota no puede leer su variable local. Puede definir fácilmente variables antes que usted Enter-PSSession
y utilizarlas más adelante en una sesión 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 de este punto, $mycredRemote
contiene sus credenciales.
Respuesta2
Pruebe esto, invierte SecureString para borrar texto, local y 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