Obtener el valor de una variable utilizando otra variable mediante la dirección del primer carácter de la cadena no administrada en PowerShell utilizando la clase Marshal
# StringToHGlobalAnsi: Copia el contenido de un String administrado en la memoria no administrada, convirtiéndolo en formato ANSI mientras realiza la copia.
# PtrToStringAnsi: Asigna un String administrado y copia en él total o parcialmente una cadena ANSI (en Windows) o UTF-8 (en Unix) no administrada.
$a = "hola"
$b = "adios"
# Dirección del primer carácter de la cadena no administrada. Dirección, en memoria no administrada, donde se copió la cadena o 0 si $a es null.
$ptra = [Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($a); $ptra
$ptrb = [Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($b); $ptrb
# Diferencia entre los dos Ptr
$diferencia = $ptrb.ToInt64() - $ptra.ToInt64()
# Obtener el valor de una variable en base a una dirección Ptr de otra variable
[Runtime.InteropServices.Marshal]::PtrToStringAnsi($ptra.ToInt64()+$diferencia)