[poshrunner.exe] を取得して、PowerShell バージョン 3.0 がインストールされているマシンの PowerShell バージョン 2.0 環境でスクリプトを実行できるようにしようとしています。PowerShell.exe はこれをサポートしていますが、PowerShell 1.0 の明確なサポートは疑わしいようです。
Windows 8 を実行しています。GAC に System.Management.Automation.dll の 2 つのバージョンがあります。
- System.Management.Automation、Version=3.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35 (によってロード
powershell.exe -version 3.0
) - System.Management.Automation、Version=1.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35 (
powershell.exe -version 1.0
およびによってロードpowershell.exe -version 2.0
)
私が知る限り、System.Management.Automation.dllのパブリッシャー ポリシー アセンブリはありません。
C:\Windows\assembly\GAC_MSIL>dir C:\Windows\assembly\GAC_MSIL\policy*
Volume in drive C has no label.
Volume Serial Number is 0207-A8AA
Directory of C:\Windows\assembly\GAC_MSIL
11/16/2012 11:49 PM <DIR> Policy.12.0.Microsoft.Office.Interop.Access.Dao
12/13/2012 11:49 PM <DIR> policy.2.1.Microsoft.Web.PlatformInstaller
12/13/2012 11:49 PM <DIR> policy.3.0.Microsoft.Web.PlatformInstaller
10/29/2012 03:33 PM <DIR> policy.3.5.System.Data.SqlServerCe
10/29/2012 03:33 PM <DIR> policy.3.5.System.Data.SqlServerCe.Entity
0 File(s) 0 bytes
5 Dir(s) 51,204,710,400 bytes free
C:\Windows\assembly\GAC_MSIL>
ただし、実行するAppDomain.CurrentDomain.Load("System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
と、アセンブリのバージョン 3 が読み込まれます。Assembly.Load()の結果は同じです。
アセンブリを呼び出す前に:
[ ]
アセンブリを呼び出した後:
[ ]
そのコードはたまたまセカンダリ アプリ ドメインで実行されているため、私は AppDomain 設定について多くのことを喜んで実行できます。System.Management.Automation、Version=1.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35 を強制的に実行時に条件付きで読み込むにはどうすればよいですか。