1

[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 を強制的に実行時に条件付きで読み込むにはどうすればよいですか。

4

2 に答える 2

1

私は、System.Management.Automation でさまざまな問題を抱えてきました。私は最近、再びヒットし、バッチ ファイルを使用して .NET から PowerShell を実行する別の方法を見つけることにしました。コード サンプルについては、次のブログ投稿を参照してください: http://www.nootn.com.au/2013/01/run-powershell-from-net-program-without.html

これは、特定のバージョンの PowerShell を強制的に実行する方法についても言及しているため、この解決策がうまくいく場合は、質問に対する答えになる可能性があります (System.Management.Automation を試して回避することに満足していると仮定します)。

これが問題の解決または回避に役立つことを願っています!

于 2013-01-14T15:23:17.840 に答える
0

プロジェクトの参照に移動する場合は、参照を見つけて、ローカルにコピーするように指示してください。これも役立ちます。

于 2013-06-06T22:56:11.970 に答える