PowerShell은 콘솔 언어이지만 때로는 PS 스크립트에서 사용자에게 특정 이벤트에 대해 알리거나 작업을 수행하라는 메시지를 표시해야 합니다. 예를 들어, 무거운 PoSh 스크립트의 완료 또는 중요한 이벤트가 발생했을 때 팝업 알림 또는 풍선 도움말을 표시할 수 있습니다.
가장 쉬운 방법은 Windows 스크립트 하위 시스템을 사용하여 텍스트가 포함된 창을 표시하는 것입니다. (W스크립트 ) PowerShell에서 호출합니다.
이 PowerShell 코드는 메시지와 확인 버튼이 있는 공통 창을 표시합니다.
$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("The report generation script is successfully completed!")
팝업의 다양한 속성 사용 방법을 사용하면 메시지 텍스트가 포함된 모달 창의 모양을 사용자 지정할 수 있습니다. 사용자의 대답(예/아니오)으로 스크립트로 돌아갈 수도 있습니다.
$Output = $wshell.Popup("The report generation script is successfully completed! Do you want to display a report on the screen?",0,"The report is ready",4+32)
Popup 메소드의 일반 구문 및 사용 가능한 매개변수:
Popup(<Text>,<SecondsToWait>,<Title>,<Type>)
매개변수:
- <
Text
> — 메시지 텍스트(문자열); - <
SecondsToWait
> — 숫자(선택 사항). 메시지 창이 자동으로 닫히는 시간(초) - <
Title
> —문자열(선택 사항). 팝업 창의 제목 텍스트(캡션), - <
Type
> —숫자(선택 사항). 버튼과 아이콘의 유형을 결정하는 플래그의 조합입니다.
가능한 유형 플래그 값:
- 0 — 확인 버튼,
- 1 — 확인 및 취소 버튼
- 2 — 중지, 재시도 및 건너뛰기 버튼
- 3 — 예, 아니요 및 취소 버튼
- 4 — 예 및 아니오 버튼
- 5 — 재시도 및 취소 버튼
- 16 — 정지 아이콘
- 32 — 질문 아이콘,
- 48 — 느낌표 아이콘
- 64 — 정보 아이콘.
팝업 메소드는 사용자가 어떤 버튼을 클릭했는지 알 수 있는 정수를 반환합니다. 가능한 값:
- -1 — 시간 초과;
- 1 — 확인 버튼
- 2 — 취소 버튼,
- 3 — 중지 버튼,
- 4 — 재시도 버튼
- 5 — 건너뛰기 버튼,
- 6 — 예 버튼;
- 7 — 버튼이 없습니다.
Windows Forms API를 통해 Windows 7, 8.1 및 10에서 더 매력적인 팝업 메시지(풍선 도움말)가 표시될 수 있습니다. . 다음 PowerShell 코드는 20초 후에 자동으로 사라지는 Windows 10 알림 표시줄 옆에 팝업 메시지를 표시합니다.
Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = ‘This is the pop-up message text for the Windows 10 user'
$balmsg.BalloonTipTitle = "Attention $Env:USERNAME"
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(20000)
Windows 10(PowerShell 5.0 이상)에서 다채로운 팝업 메시지를 생성하려면 별도의 PowerShell 모듈 BurntToast를 사용할 수도 있습니다. PowerShell 갤러리에서.
모듈은 Windows 10 패키지 관리자를 사용하여 온라인 리포지토리에서 설치됩니다.Install-Module -Name BurntToast
예를 들어 이제 "이더넷 케이블이 연결되어 있을 때 Wi-Fi를 자동으로 비활성화하는 방법" 문서에서 스크립트에 다채로운 알림을 쉽게 추가할 수 있습니다.
New-BurntToastNotification -Text "Disconnecting from Wi-Fi network", "You have been disconnected from your Wi-Fi network since your device was connected to a high-speed Ethernet LAN" -AppLogo C:\PS\changenetwork.png
따라서 PowerShell을 사용하여 사용자에게 알림을 표시하는 방법을 알고 있습니다. 사용자에게 스피커가 있는 경우 좋아하는 멜로디를 재생할 수도 있습니다.
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(698,350)
[console]::beep(523,150)
[console]::beep(415,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(880,500)
[console]::beep(440,350)
[console]::beep(440,150)
[console]::beep(880,500)
[console]::beep(830,250)
[console]::beep(784,250)
[console]::beep(740,125)
[console]::beep(698,125)
[console]::beep(740,250)
[console]::beep(455,250)
[console]::beep(622,500)
[console]::beep(587,250)
[console]::beep(554,250)
[console]::beep(523,125)
[console]::beep(466,125)
[console]::beep(523,250)
[console]::beep(349,125)
[console]::beep(415,500)
[console]::beep(349,375)
[console]::beep(440,125)
[console]::beep(523,500)
[console]::beep(440,375)
[console]::beep(523,125)
[console]::beep(659,1000)
[console]::beep(880,500)
[console]::beep(440,350)
[console]::beep(440,150)
[console]::beep(880,500)
[console]::beep(830,250)
[console]::beep(784,250)
[console]::beep(740,125)
[console]::beep(698,125)
[console]::beep(740,250)
[console]::beep(455,250)
[console]::beep(622,500)
[console]::beep(587,250)
[console]::beep(554,250)
[console]::beep(523,125)
[console]::beep(466,125)
[console]::beep(523,250)
[console]::beep(349,250)
[console]::beep(415,500)
[console]::beep(349,375)
[console]::beep(523,125)
[console]::beep(440,500)
[console]::beep(349,375)
[console]::beep(261,125)
[console]::beep(440,1000)