Me gustaría poder obtener la versión de archivo y la versión de ensamblado de todos los archivos DLL dentro de un directorio y todos sus subdirectorios. Soy nuevo en la programación, y no puedo entender cómo hacer que funcione este bucle.Obtener versión de archivo y versión de ensamblado de archivos DLL en el directorio actual y todos los subdirectorios
que tienen el código de PowerShell para obtener la versión de ensamblado (tomado de un foro):
$strPath = 'c:\ADMLibrary.dll'
$Assembly = [Reflection.Assembly]::Loadfile($strPath)
$AssemblyName = $Assembly.GetName()
$Assemblyversion = $AssemblyName.version
Y esto también:
$file = Get-ChildItem -recurse | %{ $_.VersionInfo }
¿Cómo puedo hacer un bucle de este modo que puedo devolver la versión ensamblada de todos los archivos dentro de un directorio?
Esto funciona, pero por desgracia, carga los archivos y no los libera ... Ejecutar y luego tratar de borre uno de esos archivos. –
Eso es de hecho un inconveniente. Puede eludir esto al generar una nueva instancia de PowerShell: 'powershell -NoProfile -OutputFormat XML -EncodedCommand $ encodedCommand |% {$ _}' con '$ encodedCommand' que es la variante codificada en Base64 del fragmento anterior (consulte' powershell /? 'para una muestra de cómo obtenerlo). Esto producirá los mismos objetos que de otro modo se producirían, pero el shell que carga los archivos ya no está vivo. – Joey
Estoy intentando cargar los ensamblados en el nuevo AppDomain y descargarlo más tarde, pero no funciona: el cargador de ensambles busca ensamblajes en el directorio de PowerShell (C: /windows/system32/WindowsPowerShell/v1.0) aunque configuré el directorio base al crear el nuevo dominio ... –