Soy bastante nuevo en Powershell y estoy trabajando en la configuración de mi archivo profile.ps1. Tengo algunos archivos DLL administrados que uso a menudo para mantener los procesos durante todo el día y me gustaría poder cargarlos con llamadas a funciones rápidas. Así que creé esta función en mi archivo PS1:Función Powershell devolver objeto instanciado ... ¿tipo de?
function LoadSomeDll
{
[System.Reflect.Assembly]::LoadFrom("c:\wherever\SomeLib.dll")
return new-object "SomeLib.SomeObject"
}
Luego, en Powershell, hago esto:
PS > $myLibInstance = LoadSomeDll
El problema es que $ myLibInstance, a pesar de que parece estar cargado, no lo hace comportarse de la manera que lo espero o si lo haría si lo cargara explícitamente sin la función. Diga SomeLib.SomeObject tiene una propiedad pública de cadena "ConnectionString" que se carga a sí misma (desde el registro, yuck) cuando se construye el objeto.
PS > $myLibInstance.ConnectionString
//Nothing returned
Pero, si lo hago sin la función, así:
PS > [System.Reflect.Assembly]::LoadFrom("c:\wherever\SomeLib.dll")
PS > $myOtherLibInstance = new-object "SomeLib.SomeObject"
me sale esto:
PS > $myOtherLibInstance.ConnectionString
StringValueOfConnectionStringProperty
¿Por qué sucede esto? ¿Hay alguna manera de que pueda devolver un nuevo objeto instanciado de una función de Powershell?
Gracias de antemano.
Gracias de nuevo, JaredPar. Has sido mi salvador Powershell durante la última semana. –
@PITADev, esencialmente has golpeado los mismos problemas que golpeé en mis primeros días de powershell en casi el mismo orden :). Es tan contra intuitivo a veces. – JaredPar
+1 buena explicación. Me he encontrado con este problema también. –