/ / Сценарій Powershell працює лише в деяких сценаріях - windows, powershell, scripting, powershell-v2.0

Сценарій Powershell працює лише в певних сценаріях - вікнах, растрових сценаріях, сценаріях, powershell-v2.0

У мене є функції, які працюють лише на деяких сценаріях.

  • Він працює на 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

Відповіді:

1 для відповіді № 1

Не впевнений, що це тут справа, але я пам'ятаю помилку про те, що відкрите діалогове вікно не фокусується і з'являється за іншими відкритими вікнами. Чи можете ви підтвердити?

UPDATE:

Встановіть властивість ShowHelp значення $ true.

$SaveFileDialog.ShowHelp = $true

Він працює в ISE, оскільки стан квартир ISE - це STA за замовчуванням, а режим powerhell - MTA, ви можете перевірити його за допомогою:

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

Ваш код буде працювати, якщо ви відкриєте консоль у режимі STA:

powershell.exe -STA