Ставимо 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 скрипт буде виконаний.
.