PowerShell для отображения сообщения в случае успешного выполнения функции - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть простой ps-скрипт для перезапуска процесса windows explorer. У меня есть эта функция, чтобы сделать это:

Function Restart-Explorer()
{
    Stop-Process -ProcessName explorer
}

Function ranFunction
{
    if (Restart-Explorer) {
        "Success"
    }
    else {
        "failed"
    }
}

Я просто не знаю, как отобразить всплывающее сообщение, если функция работает успешно или нет.

Может кто-нибудь указать мне правильное направление, пожалуйста? ресурсы, где я могу узнать это было бы очень полезно.

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Вы можете сделать обе вещи внутри одной функции Restart-Explorer.

Stop-Process ничего не возвращает, если не указан переключатель PassThru. Используя это в сочетании с ErrorAction SilentlyContinue, вы можете проверить, возвращен ли объект (Успешно) или нет (Сбой).

Примерно так:

function Restart-Explorer {
    $proc = Stop-Process -Name explorer -PassThru -ErrorAction SilentlyContinue
    if ($proc) { 
        $msg = "Success"
        $icon = "Information"
    } 
    else { 
        $msg = "Failed"
        $icon = "Critical"
    }
    Add-Type -AssemblyName Microsoft.VisualBasic
    [Microsoft.VisualBasic.Interaction]::MsgBox($msg, "OKOnly,SystemModal,$Icon", "Restart Explorer")
}

Restart-Explorer

I Я использую метод [Microsoft.VisualBasic.Interaction]::MsgBox() здесь, потому что он имеет простой способ убедиться, что диалог является верхним, добавив SystemModal

Надежда, которая помогает

0 голосов
/ 09 апреля 2020

Если все, что вам нужно, это всплывающее окно, которое пользователь должен подтвердить сообщением, вы можете добавить следующее к своему коду:

[System.Windows.MessageBox]::Show( 'Message here','Window Title','OK','Window Type[Information,Error,Warning]')

Поэтому, применяя к вашему сценарию, это было бы моим предложением:

Function Restart-Explorer()
{
    Stop-Process -ProcessName explorer
}

Function ranFunction
{
    if (Restart-Explorer) {
        [System.Windows.MessageBox]::Show( 'Message Here','Some Title','OK','Information')
    }
    else {
        [System.Windows.MessageBox]::Show( 'Message Here','Some Title','OK','Error')
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...