Me encuentro con un error algo extraño al realizar la suplantación en PowerShell y C#. Ejecutar el siguiente código no muestra ningún error.Suplantación de identidad arroja FileNotFoundException con WindowsIdentity en Powershell
PSObject result = null;
using (PowerShell powershell = PowerShell.Create())
{
RunspaceConfiguration config = RunspaceConfiguration.Create();
powershell.Runspace = RunspaceFactory.CreateRunspace(config);
powershell.Runspace.Open();
powershell.AddScript(String.Format(CmdletMap[PSVocab.OsBootTime],
this.ComputerName));
result = powershell.Invoke().First();
powershell.Runspace.Close();
}
return DateTime.Parse(result.ToString());
donde la secuencia de comandos para PS CmdletMap[PSVocab.OsBootTime]
es simplemente:
$info = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $computer
; $info.ConvertToDateTime($info.LastBootUpTime)
El código C# anterior funciona correctamente a nivel local. Sin embargo, una vez que tuve este mismo bloque con Windows suplantación de este modo:
WindowsIdentity ImpersonatedIdentity = new WindowsIdentity(ImpersonateUserName);
WindowsImpersonationContext impersonatedContext
= ImpersonatedIdentity.Impersonate();
try
{
PSObject result = null;
using (PowerShell powershell = PowerShell.Create())
{
RunspaceConfiguration config = RunspaceConfiguration.Create();
powershell.Runspace = RunspaceFactory.CreateRunspace(config);
powershell.Runspace.Open();
powershell.AddScript(String.Format(CmdletMap[PSVocab.OsBootTime],
this.ComputerName));
result = powershell.Invoke().First();
powershell.Runspace.Close();
}
return DateTime.Parse(result.ToString());
} catch (Exception ex) { // do logging here }
me sale el siguiente excepción:
FileNotFoundException: C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
y depuración muestra que se produce un error en RunspaceConfiguration.Create()
. Sin embargo, no estoy seguro de por qué.
La DLL aunque ya está registrada en el GAC, así como también se hace referencia en el proyecto en sí. También confirmó que las rutas y la versión son correctas.
Referencias tomadas de:
¿Puede alguien dar una idea de esto?