- Хроники. - -

Запускаем 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

Copyright © 2008 Все, что меня окружает. All rights reserved.