0

一部のシナリオでのみ機能する機能があります。

  • Powershell ISEで動作しますが、同じものを.Ps1ファイルに保存して実行すると、動作しません。
  • 私は大きなスクリプトの一部としての機能を持っています。Windows 7で実行すると機能し、ウィンドウが開きますが、Windows Server2008R2では実行されません。

なんで?

関数とその呼び出しを含むスクリプトは次のとおりです。

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
4

1 に答える 1

1

これがここに当てはまるかどうかはわかりませんが、開いたダイアログがフォーカスされず、開いている他のウィンドウの後ろに表示されるというバグを覚えています。確認できますか?

アップデート:

ShowHelpプロパティを$trueに設定します。

$SaveFileDialog.ShowHelp = $true

ISEのアパートメント状態はデフォルトでSTAであり、PowerShellモードはMTAであるため、ISEで機能します。次のコマンドで確認できます。

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

STAモードでPowerShellを開くと、コードが機能します。

powershell.exe -STA
于 2012-08-08T08:16:01.780 に答える