3

test.ps1 という Exchange のメールボックスを有効にする単純な PowerShell スクリプトがあります。スクリプトは次のとおりです。

add-pssnapin microsoft.exchange.management.powershell.admin Enable-Mailbox -Identity 'gi joe' -database 'myserver\myserver mailbox database 17'

Powershell コンソールに移動して入力すると

./test.ps1

正常に実行されます。ただし、VB.netで呼び出すと、

Process.Start("powershell", "test.ps1")

端末の点滅が速すぎて、何を言っているのかわかりません。また、メールボックスを作成しません。なぜこれが起こるのですか、またはエラーを読む前に端末が消えるのを止めるにはどうすればよいですか?

4

1 に答える 1

4

何がうまくいかないかを確認するには、代わりにこれを試してください:

Process.Start("powershell", "-noexit -file c:\<path>\test.ps1")

このエラーは、test.ps1 へのフル パスを指定していないことが原因であると思われます。

もう 1 つの可能性は、32 ビットの VB アプリが 64 ビットの Powershell を起動する必要があることです (snapin またはモジュールはそこでしか利用できない場合があります)。その場合、パスで PowerShell を呼び出す必要があり、パスで を使用SysNativeして 64 ビットの PowerShell ディレクトリを表示できるようにする必要があります。

var powerShellPath = "C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe"
Process.Start(powerShellPath , "-noexit -file c:\<path>\test.ps1")

申し訳ありませんが、おそらく適切な VB 構文ではありませんが、うまくいくはずです。

于 2012-08-07T17:50:57.320 に答える