¿Se puede acceder a una credencial cifrada desde una PSSession?

¿Se puede acceder a una credencial cifrada desde una PSSession?

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-PSSessiony 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, $mycredRemotecontiene 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

información relacionada