Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Ставимо PowerShell скрипт на паузу.

Простий прийом, що дозволяє призупинити виконання PowerShell скрипта до натискання користувачем будь-якої клавіші або скасувати його зовсім.

Для прикладу створимо скрипт ask.ps1, що містить ось такий текст:

Write-Host "Press any key to continue ... or Ctrl + C to abort"

$ x = $ host.UI.RawUI.ReadKey ( "NoEcho, IncludeKeyDown")

$ a = "Скрипт"
$ b = "успішно"
$ c = "виконаний !!!"
Write-Host
Write-Host $ a $ b $ c
Write-Host

Ключовим моментом тут є конструкція:

$ x = $ host.UI.RawUI.ReadKey ( "NoEcho, IncludeKeyDown")

В ній ми використовуємо метод ReadKey властивості RawUI, що є властивістю UI, яке в свою чергу є властивістю змінної середовища $ host, що зберігає поточний сеанс PowerShell. Для ReadKey ми вказуємо наступні параметри:

IncludeKeyDown - Ця опція продовження роботи скрипта в тому випадку, якщо буде натиснута будь-яка клавіша.Як варіант, можна використовувати параметр IncludeKeyUp, в цьому випадку робота скрипта продовжиться тільки після того, як клавіша буде відпущена.
NoEcho - запобігає виводу на екран зайвої інформації.

Зверніть увагу, що результат виконання ReadKey ми поміщаємо в змінну $ x, що також допомагає запобігти появі на екрані непотрібної інформації.

Запускаємо скрипт, і отримуємо можливість або продовжити виконання при натисканні будь-якої клавіші, або скасувати, натисніть сполучення клавіш Ctrl + C.



Важливо. Даний трюк не працює в PowerShell ISE.

У наведеному прикладі у користувача є можливість скасувати виконання скрипта.Якщо ви не хочете надавати користувачеві цю можливість, то треба додати параметр AllowCtrlC:

$ x = $ host.UI.RawUI.ReadKey ( "NoEcho, IncludeKeyDown, AllowCtrlC")

В цьому випадку навіть при натисканні клавіш Ctrl + C скрипт буде виконаний.

.