Powershell脚本适用于Powershell,但不适用于VB.Net

时间:2012-08-07 17:46:31

标签: vb.net powershell exchange-server

我有一个简单的PowerShell脚本,可以在Exchange中启用名为test.ps1的邮箱。这是脚本:

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”)

终端闪烁得太快,让我看不出它的内容,也没有创建邮箱。为什么会发生这种情况,或者如何在我能够读取错误之前阻止终端消失?

1 个答案:

答案 0 :(得分:4)

要查看出现了什么问题,请尝试以下方法:

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

我怀疑你得到的错误是因为你没有提供test.ps1的完整路径。

另一种可能性是你的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语法,但应该让你去。