ここで使用するソフトウェアをバックアップするためのAPIである.NETアセンブリ(dll)があります。これには、Powershellスクリプトで利用したいいくつかのプロパティとメソッドが含まれています。ただし、最初にアセンブリを読み込み、次にアセンブリが読み込まれたらいずれかのタイプを使用することで、多くの問題が発生します。
完全なファイルパスは次のとおりです。
C:\rnd\CloudBerry.Backup.API.dllPowershellでは、次を使用します。
$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には、サイトで同じ機能を使用する例もありますが、私にとってはうまくいきません。
最終的に、リフレクションを使用してアセンブリをロードできるように見えることがわかりました。
[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どんなガイダンスも大歓迎です!!