2012-08-08 36 views
0

我有一個只能在某些scensarios中運行的函數。Powershell腳本僅在某些情況下運行

  • 它適用於Powershell ISE,但是當我將相同的東西保存在.Ps1文件中並運行它時,它不起作用。
  • 我有作爲一個大腳本的一部分的功能。它在Windows 7上運行時運行並打開窗口,但不能在Windows Server 2008 R2上運行。

爲什麼?

與功能的腳本,並調用它的是:如果

Function Get-SaveFileTxt($initialDirectory) 
{ 
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | 
Out-Null 

$SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog 
$SaveFileDialog.initialDirectory = $initialDirectory 
$SaveFileDialog.AddExtension = $true 
$SaveFileDialog.DefaultExt = "txt" 
$SaveFileDialog.filter = "Text Files (*.txt)| *.txt" 
$SaveFileDialog.ShowDialog() | Out-Null 
$SaveFileDialog.filename 
} 

Get-SaveFileTxt 
+0

_「it does not work」_?請更具體地說明你得到的錯誤。 – 2012-08-08 07:09:43

+0

@tbergstedt試試吧。該腳本仍然執行沒有錯誤,顯然沒有任何反應。 – 2012-08-08 13:20:24

回答

1

不知道這是這裏的情況,但我記得,在打開的對話框不接受焦點,並出現於其他打開的窗口中的錯誤。你可否確認?

更新:

將ShowHelp屬性設置爲$ true。

$SaveFileDialog.ShowHelp = $true 

它工作在ISE,因爲ISE的公寓狀態是STA在默認情況下,你的PowerShell的模式是MTA,你可以用一下:

[System.Threading.Thread]::CurrentThread.ApartmentState 

您的代碼將工作,如果你打開PowerShell中的STA模式:

powershell.exe -STA 
+0

謝謝@Shay。它不打算在後面打開一個保留,看起來沒有任何反應。 – 2012-08-08 13:22:11

+0

有趣。 ShowHelp究竟是什麼? 它完全改變了界面,用showhelp在false中的形式如下所示:https://dl.dropbox.com/u/300838/false.png,看起來像這樣https://dl.dropbox.com/u /300838/true.png – 2012-08-08 14:36:25

+0

顯示幫助按鈕? :) – 2012-08-08 14:43:03

相關問題