- Хроники. - -
Запускаем Powershell скрипт как службу
Posted By Ikutsin On 27 марта 2012 @ 13:15 In Автоматизация и ИИ | Comments Disabled
[1]Запустить скрипт в большинстве случаев поможет планировщик задач (Task Scheduler). Но предположим, у нас есть PowerShell скрипт, который работает в вечном цикле и/или реагирует на изменения системы в реальном времени. Такая ситуация сложилась со мной сегодня ночью, когда я писал скрипт обновления Secondary DNS на Bind9 из MS DNS.
Чтобы следить за изменениями, как и в обычном C# следует использовать FileWatcher. Вот такой простой скрипт следит за моей пользовательской папкой в вечном цикле:
$localPath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent #Set-ExecutionPolicy Unrestricted $watcher = New-Object System.IO.FileSystemWatcher $watcher.Path = get-location $watcher.IncludeSubdirectories = $true $watcher.EnableRaisingEvents = $false $watcher.NotifyFilter = [System.IO.NotifyFilters]::LastWrite -bor [System.IO.NotifyFilters]::FileName while($TRUE){ $result = $watcher.WaitForChanged([System.IO.WatcherChangeTypes]::All, 1000); #http://msdn.microsoft.com/en-us/library/t6xf43e0.aspx WatcherChangeTypes #[System.IO.WatcherChangeTypes]::Changed -bor [System.IO.WatcherChangeTypes]::Deleted -bor [System.IO.WatcherChangeTypes]::Renamed -bOr [System.IO.WatcherChangeTypes]::Created, 1000); if($result.TimedOut){ continue; } #Change in + AppData\Roaming\Skype\ousanov\main.db-journal write-host "Change in " + $result.Name . $localPath\yo.ps1 }
Теперь, осталось установить скрипт для работы в качестве службы. Для этого понадобится пара утилит из Windows Server Resource Kit Tools 2003 [2] и права администратора для изменений в реестре. Не торопитесь качать весь пакет, все нужные утилиты я заботливо положил в один архив [3]. В принципе, он содержит все что описано в помощи от MS [4]. Только разнесен по файлам. Так, например Install.bat содержит все что надо для установки сервиса и запуска обновления реестра из файла export.reg. В итоге, установка сводится к изменению путей и названий. Разрешение проблем: Перед тем как ставить службу, вы, возможно, захотите проверить работоспособность. Для этого нужно установить svrany но не импортировать reg файл. В свойствах сервиса можно прописать начальные параметры например: c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -noexit C:\_shared\powerShell\filewatch\filewatch.ps1 или c:\\windows\\system32\\cmd.exe /k [5]. В моем случае я получил старый добрый «execution of scripts is disbled on this system», лечится с помощью «set-executionpolicy unrestricted».
Article printed from Хроники.:
URL to article: /2314-zapuskaem-powershell-skript-kak-sluzhbu
URLs in this post:
[1] Image: /wp-content/uploads/2012/03/powershell_21.jpg
[2] Windows Server Resource Kit Tools 2003: http://www.microsoft.com/download/en/details.aspx?displaylang=ru&id=17657
[3] в один архив: http://www.downloads.binaryanalysis.net/?a=d&i=1iR2NBV3LV
[4] помощи от MS: http://support.microsoft.com/kb/137890
[5] c:\\windows\\system32\\cmd.exe /k: http://support.microsoft.com/kb/152460
Click here to print.
Copyright © 2008 Все, что меня окружает. All rights reserved.