Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

848
Visualizações
PowerShell: ¿Módulo de importación o tipo adicional para ensamblajes .NET?

Estoy usando PowerShell 5.1, Windows 10 x64.

¿Cuál de estos 2 cmdlets debo usar para cargar ensamblajes .NET (en particular, ensamblajes .NET Framework 4+) en PowerShell? ¿Cuál es la diferencia central entre ellos? Quiero cargar ensamblajes para acceder a tipos, crear objetos, llamar a métodos, etc.

No he encontrado declaraciones explícitas en la documentación. Estos cmdlets se describen como si fueran cosas completamente diferentes. La documentación de MSDN para Import-Module ni siquiera contiene ejemplos para la carga de ensamblajes .dll , solo módulos de PowerShell. Sin embargo Import-Module funciona con ensamblajes de .NET Framework (sin embargo, solo .dll ): puedo trabajar perfectamente con tipos de ensamblajes importados, sus ensamblajes a los que se hace referencia también se resuelven y cargan. ¿Porqué es eso?

En otras palabras, según mi experiencia, aún no he encontrado ninguna diferencia entre estos 2 métodos de importación de ensamblajes (al menos para los ensamblajes .NET Framework 4 .dll ).

Esta antigua publicación de blog: Uso de ensamblajes de .NET Framework en Windows PowerShell incluso usa Reflection.Assembly.LoadWithPartialName . Creo que esto se debe a que cargan un ensamblado desde el GAC y no quieren especificar la ruta completa (aunque puedo estar equivocado).

Para mis ensamblajes, conozco la ruta completa a ellos, por lo que puedo especificarlo tanto en Import-Module como Add-Type . Nuevamente, ¿cuál es la diferencia y qué debo usar?

¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Powershell tiene tres formas principales de importar clases, sin contar los métodos .net como reflection.assembly . En general, todos ellos harán bien lo que necesitas, pero tienen características adicionales:

Módulo de importación

tiene, con mucho, la mayor flexibilidad y puede importar módulos básicos (generalmente archivos .psd1 o .psm1) y sus ensamblajes necesarios, módulos CIM (con archivos CDXML), objetos de tipo [Assembly] , ensamblajes a través de archivos .dll, cmdlets a través de . dll, y probablemente más. Hay más funciones para importar módulos PS, pero no para clases que no sean "cargar todo" .

Agregar tipo

tiene un montón de funcionalidad adicional para agregar clases de manera eficiente si lo necesita. Por ejemplo, puede tomar definiciones de tipo C#/VB/JScript como cadenas y cargarlas directamente. Personalmente, solo lo uso cuando lo necesito, o si import-module no puede importar correctamente un archivo dll, pero hay muchas más funciones enumeradas en la ayuda. No importa módulos como las otras opciones.

Utilizando

Relativamente nuevo y solo en v5.1+. Importará definiciones de clase desde un módulo, a diferencia Import-Module o la instrucción #requires . De lo contrario, se comporta de manera muy similar a ipmo , pero me gusta por su legibilidad y prefiero using namespace a la versión .net:

 using module ModuleName # or using assembly 'C:\path\to\assembly.name.subassembly.whatever.dll' using namespace assembly.name.subassembly.whatever.additional.namespace [NiceAndShort]::Foo

sus ensamblajes a los que se hace referencia también se resuelven y cargan. ¿Porqué es eso?

Desafortunadamente, powershell toma el camino de simplemente cargar cada ensamblado (y sus dependencias, y las propias dependencias de powershell) en el mismo contexto. Esto puede causar algunos dolores de cabeza cuando se trata de versiones de dependencia en conflicto. Se explica mejor en Resolver conflictos de dependencia de ensamblado de módulos de PowerShell .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda