Próbuję wyświetlić monit o akcję użytkownika i jeśli nie zostanie podjęte żadne działanie, podpiszę i skrypt będzie kontynuował. tutaj jest mój wiersz polecenia configuraiton dialogowePowershell - monituj użytkownika, a następnie wygasa monit po xx sekundach
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes",""
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No",""
$cancel = New-Object System.Management.Automation.Host.ChoiceDescription "&Cancel",""
$choices = [System.Management.Automation.Host.ChoiceDescription[]]($yes,$no,$cancel)
$caption = "Caption message here"
$dialogmessage = ("Do you want to do something?:`n")
$timer = #set some value
#While the value is grater than zero keep the prompt open
while($timer -gt 0)
{
$result = $Host.UI.PromptForChoice($caption,$dialogmessage,$choices,0)
if($result -eq 0){Write-Host "Yes was selected"}
if($result -eq 1){Write-Host "No was selected"}
if($result -eq 2){Write-Host "Canceled by user.";exit}
}
Mam spojrzał w górę iw dół w internecie Widziałem to zaimplementowane w C#, ale dla życia mnie nie mogę określić najlepsze podejście do PowerShell. Byłbym wdzięczny za każdą pomoc.
Dziękuję
Edycja: Dziękuję Noego, tutaj jest zaktualizowany kod, to jest jeszcze bardziej kompaktowy też!
$prompt = new-object -comobject wscript.shell
$answer = $prompt.popup(("Do you want to do something?`n",5,"title",3)
if($answer -eq 6) {Write-Host "Yes was selected"}
if($answer -eq 7) {Write-Host "No was selected"}
if($answer -eq -1) {Write-Host "Timed out}
if($answer -eq 2) {Write-Host "Canceled by user.";exit}
Wow nigdy jednak używać ComObject Wscript.Shell. Dziękuję, Noah! –
Nie ma za co, cieszę się, że mogłem pomóc –