Почему мой сценарий работает в ISE powershell, а не в файле .ps1? - PullRequest
0 голосов
/ 05 июля 2018

Раньше он работал, но теперь он внезапно завершается менее чем через секунду после открытия. Я установил неограниченную и переустановленную политику выполнения Windows, но она все еще не работает ... PS1 отображается в диспетчере задач в течение 1 секунды перед службой работоспособности безопасности Windows, когда он запускается с использованием .vbs, а затем исчезает: https://i.imgur.com/VNX7NKx.png

Вот скрипт (его цель - показывать уведомления):

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$notifyobj = New-Object System.Windows.Forms.NotifyIcon
$notifyobj.icon = "c:/users/work/Pictures/icon.ico"
$notifyobj.BalloonTipTitle = "New Message"
$notifyobj.BalloonTipText = "C"
$notifyobj.Visible = $True
$notifyobj.ShowBalloonTip(1000)
$notifyobj.Dispose()

Подробнее о этой теме.

1 Ответ

0 голосов
/ 05 июля 2018

Странно, конечно, и не должно было быть никаких причин, по которым вам пришлось бы переустанавливать Windows для своих усилий. Итак, что-то еще влияет на это. Трудно сказать, что, хотя.

Попробуйте эту версию, чтобы увидеть, есть ли у вас / более успеха. Это другой подход, но он работает на моих системах.

Function Show-Notification 
{            
    Param
    (
        [string]$MessageType,
        [string]$MessageText,
        [string]$MessageTitle
    )            

    #load Windows Forms and drawing assemblies            
    [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
    [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null            

    #define an icon image pulled from PowerShell.exe            
    $Icon=[system.drawing.icon]::ExtractAssociatedIcon((join-path $pshome powershell.exe))            
    $Notify = New-Object System.Windows.Forms.NotifyIcon            
    $Notify.icon = $Icon            
    $Notify.visible = $True 

    #define the tool tip icon based on the message type            
    switch ($messagetype) 
    {            
        "Error"   {$MessageIcon = [System.Windows.Forms.ToolTipIcon]::Error}            
        "Info"    {$MessageIcon = [System.Windows.Forms.ToolTipIcon]::Info}            
        "Warning" {$MessageIcon = [System.Windows.Forms.ToolTipIcon]::Warning}            
        Default   {$MessageIcon = [System.Windows.Forms.ToolTipIcon]::None}            
    }            

    #display the balloon tipe            
    $Notify.showballoontip($Notification_timeout,$MessageTitle,$MessageText,$MessageType)            
} 

Show-Notification -MessageType Info -MessageText 'some message' -MessageTitle 'New Alert'

enter image description here

enter image description here

Обновление

Изменение вашего опубликованного кода, чтобы соответствовать нескольким элементам в моем, позволяет вашему коду работать в консоли ISE, как и ожидалось.

[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null  
$notifyobj = New-Object System.Windows.Forms.NotifyIcon
# I don't have your icon, so, using what I know I can reach
$notifyobj.Icon = [system.drawing.icon]::ExtractAssociatedIcon((join-path $pshome powershell.exe))
$notifyobj.BalloonTipTitle = "New Message"
$notifyobj.BalloonTipText = "C"
$notifyobj.Visible = $True
$notifyobj.ShowBalloonTip(1000)
$notifyobj.Dispose()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...