Tôi muốn có thể lấy phiên bản tệp và phiên bản lắp ráp của tất cả các tệp DLL trong một thư mục và tất cả các thư mục con của nó. Tôi mới lập trình, và tôi không thể tìm ra cách làm cho vòng lặp này hoạt động.Tải phiên bản tập tin và phiên bản lắp ráp của các tệp DLL trong thư mục hiện tại và tất cả các thư mục con
tôi có mã này PowerShell để có được phiên bản lắp ráp (lấy từ một diễn đàn):
$strPath = 'c:\ADMLibrary.dll'
$Assembly = [Reflection.Assembly]::Loadfile($strPath)
$AssemblyName = $Assembly.GetName()
$Assemblyversion = $AssemblyName.version
Và đây cũng như:
$file = Get-ChildItem -recurse | %{ $_.VersionInfo }
Làm thế nào tôi có thể làm cho một vòng lặp trong số này quá mà tôi có thể trả về phiên bản lắp ráp của tất cả các tệp trong một thư mục?
này hoạt động, nhưng tiếc là nó tải các tập tin và không bao giờ giải phóng họ ... Chạy nó và sau đó cố gắng xóa một trong các tệp đó. –
Đó thực sự là một nhược điểm. Bạn có thể phá vỡ điều này bằng cách sinh ra một cá thể PowerShell mới: 'powershell -NoProfile -OutputFormat XML -EncodedCommand $ encodedCommand |% {$ _}' với '$ encodedCommand' là biến thể được mã hóa Base64 của đoạn mã trên (xem' powershell /? 'cho một mẫu làm thế nào để có được nó). Điều này sẽ mang lại các đối tượng tương tự mà nếu không sẽ được sản xuất, nhưng vỏ tải các tập tin không còn sống bây giờ. – Joey
Tôi đang cố gắng tải các hội đồng vào AppDomain mới và dỡ bỏ nó sau này, nhưng nó không hoạt động - bộ nạp assembly tìm kiếm các assembly trong thư mục PowerShell (C: /windows/system32/WindowsPowerShell/v1.0) mặc dù tôi đã thiết lập thư mục cơ sở khi tạo tên miền mới ... –