Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 1186
Благодарности: 181

Профиль | Отправить PM | Цитировать


Iska, Большое спасибо! Даже гуглить толком не умею...
Хм... даже не подозревал, что у ниркмд есть такая возможность, думал он только серьёзными вещами занимается . С повер шелл немного не разобрался, вот один скрипт сработал (средняя ссылка), но как убрать окно появляющееся повер шелла?
И по последней ссылке там, как я понял без иконки в трее работает скрипт? Я не смог его заставить работать... Смотрю на него, как баран на новые ворота, почему он не работает? Как его правильно сделать скрипт? Вот он:
Скрытый текст
Код: Выделить весь код
function Show-BalloonTip  
{
 
  [CmdletBinding(SupportsShouldProcess = $true)]
  param
  (
    [Parameter(Mandatory=$true)]
    $Text,
   
    [Parameter(Mandatory=$true)]
    $Title,
   
    [ValidateSet('None', 'Info', 'Warning', 'Error')]
    $Icon = 'Info',
    $Timeout = 10000
  )
 
  Add-Type -AssemblyName System.Windows.Forms

  if ($script:balloon -eq $null)
  {
    $script:balloon = New-Object System.Windows.Forms.NotifyIcon
  }

  $path                    = Get-Process -id $pid | Select-Object -ExpandProperty Path
  $balloon.Icon            = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
  $balloon.BalloonTipIcon  = $Icon
  $balloon.BalloonTipText  = $Text
  $balloon.BalloonTipTitle = $Title
  $balloon.Visible         = $true

  $balloon.ShowBalloonTip($Timeout)
}
и ещё дописано:

After running the function, simply use it like this:

Код: Выделить весь код
PS> Show–BalloonTip –Text 'Script has retrieved data' –Title 'All is fine' –Icon Info –Timeout 5000 -вот это не понял куда его?
PS>
You have to call its method Dispose() to actually remove it from the tray bar. So you can do this from script:
Код: Выделить весь код
PS> $script:balloon.Dispose()
PS>
The icon will immediately be removed from the tray area. But when you try and show another balloon, you will get an error now – the function just checks whether there is a shared variable called "balloon" and tries and reuses the icon.

Since you have disposed it, it no longer works. So when you do want to dispose the tray icon, make sure you also dispose your variable:
Код: Выделить весь код
PS> $script:balloon.Dispose()
PS> Remove–Variable –Scope script –Name balloon
PS>

что тут куда... скрипты разрешил выполнение командой сет ексекутив в повер шел, создал файл с расширением ps1, но он не работает...

а такой запускается скрипт, задачу сделал, в принципе всё устраивает, кроме моргающего окна PowerShell и таймаута:
Скрытый текст
Код: Выделить весь код
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon 

$objNotifyIcon.Icon = "C:\Scripts\Forms\Folder.ico" 
$objNotifyIcon.BalloonTipIcon = "Error" 
$objNotifyIcon.BalloonTipText = "A file needed to complete the operation could not be found." 
$objNotifyIcon.BalloonTipTitle = "File Not Found"
 
$objNotifyIcon.Visible = $True 
$objNotifyIcon.ShowBalloonTip(10000)

но опосля его работы висит иконка в трее... хотя пускай висит, это очень хорошо, т.к уведомление через 5 сек исчезает, хоть ты тресни, при любом таймауте... хоть и написано до 30 сек, но это в десятке уже наверно изменили.
Я, конешно, извиняюсь за наглость, и так за меня гуглили... ещё хотел узнать, может кто знает какой таймаут поставить, чтобы окно уведомления не скрывалось вообще, только кликом по крестику ведь уведомления центра безопасности не исчезают...

-WindowStyle Hidden -file C:\Scripts\MyScript.ps1 в PowerShell 2.0 это должно убирать окно консоли, хоть и быстрее, но оно всё равно моргает. Наверно очень мощная видеокарта у меня, быстрее рисует, чем винда сообразит
Вроде как можно обновлять уведомление, тогда оно будет постоянно, по-идее, висеть до закрытия мышкой, но как это сделать пока не придумал, тем более всё привязано к шедулеру, вот пример скрипта обновляемого уведомления, при условии, что скрипт не завершает работу:
Скрытый текст
Код: Выделить весь код
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon 

$objNotifyIcon.Icon = "C:\Scripts\Forms\Folder.ico"
$objNotifyIcon.BalloonTipIcon = "Info" 
$objNotifyIcon.BalloonTipText = "Retrieving files from C:\Windows." 
$objNotifyIcon.BalloonTipTitle = "Retrieving Files" 

$objNotifyIcon.Visible = $True 
$objNotifyIcon.ShowBalloonTip(10000)

Get-ChildItem C:\Windows

$objNotifyIcon.BalloonTipText = "The script has finished running." 
$objNotifyIcon.BalloonTipTitle = "Files retrieved." 

$objNotifyIcon.Visible = $True 
$objNotifyIcon.ShowBalloonTip(10000)

Последний раз редактировалось severagent007, 29-11-2015 в 18:42.


Отправлено: 12:43, 29-11-2015 | #5