여기에서 사용하는 소프트웨어를 백업하는 API 인 .NET 어셈블리 (dll)가 있습니다. Powershell 스크립트에서 활용하고 싶은 몇 가지 속성과 방법이 포함되어 있습니다. 그러나 어셈블리를 먼저로드 한 다음 어셈블리가로드되면 모든 유형을 사용하는 데 많은 문제가 있습니다.
완전한 파일 경로는 다음과 같습니다.
C:\rnd\CloudBerry.Backup.API.dll
Powershell에서는 다음을 사용합니다.
$dllpath = "C:\rnd\CloudBerry.Backup.API.dll"
Add-Type -Path $dllpath
아래 오류가 발생합니다.
Add-Type : Unable to load one or more of the requested types. Retrieve the
LoaderExceptions property for more information.
At line:1 char:9
+ Add-Type <<<< -Path $dllpath
+ CategoryInfo : NotSpecified: (:) [Add-Type], ReflectionTypeLoadException
+ FullyQualifiedErrorId : System.Reflection.ReflectionTypeLoadException,Microsoft.PowerShell.Commands.AddTypeComma
ndAdd-Type : Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
사이트에서 동일한 기능을 사용하는 예가있는 다른 .NET 어셈블리 인 DotNetZip 에서 동일한 cmdlet을 사용하면 작동하지 않습니다.
결국 리플렉션을 사용하여 어셈블리를로드 할 수있는 것으로 보입니다.
[System.Reflection.Assembly]::LoadFrom($dllpath)
마지막 메서드가 작동하는 것처럼 보이는 Load, LoadFrom 또는 LoadFile 메서드의 차이점을 이해하지 못합니다.
그러나 여전히 인스턴스를 만들거나 개체를 사용할 수없는 것 같습니다. 시도 할 때마다 Powershell이 공개 유형을 찾을 수 없다는 오류가 발생합니다.
수업이 있다는 것을 알고 있습니다.
$asm = [System.Reflection.Assembly]::LoadFrom($dllpath)
$cbbtypes = $asm.GetExportedTypes()
$cbbtypes | Get-Member -Static
---- 발췌의 시작 ----
TypeName: CloudBerryLab.Backup.API.BackupProvider
Name MemberType Definition
---- ---------- ----------
PlanChanged Event System.EventHandler`1[CloudBerryLab.Backup.API.Utils.ChangedEventArgs] PlanChanged(Sy...
PlanRemoved Event System.EventHandler`1[CloudBerryLab.Backup.API.Utils.PlanRemoveEventArgs] PlanRemoved...
CalculateFolderSize Method static long CalculateFolderSize()
Equals Method static bool Equals(System.Object objA, System.Object objB)
GetAccounts Method static CloudBerryLab.Backup.API.Account[], CloudBerry.Backup.API, Version=1.0.0.1, Cu...
GetBackupPlans Method static CloudBerryLab.Backup.API.BackupPlan[], CloudBerry.Backup.API, Version=1.0.0.1,...
ReferenceEquals Method static bool ReferenceEquals(System.Object objA, System.Object objB)
SetProfilePath Method static System.Void SetProfilePath(string profilePath)
---- 발췌의 끝 ----
정적 메소드를 사용하려고하면 실패합니다.
[CloudBerryLab.Backup.API.BackupProvider]::GetAccounts()
Unable to find type [CloudBerryLab.Backup.API.BackupProvider]: make sure that the assembly containing this type is load
ed.
At line:1 char:42
+ [CloudBerryLab.Backup.API.BackupProvider] <<<< ::GetAccounts()
+ CategoryInfo : InvalidOperation: (CloudBerryLab.Backup.API.BackupProvider:String) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
모든 지침에 감사드립니다!