Perl для системного администрирования



         

ADSI (Интерфейсы служб активных каталогов) - часть 17


fl lAOsPrintJobOperations Property Methods' (двойное уф) в ADSI 2.5 SDK

%status = (0x00000001 => 'PAUSED', 0x00000002 => 'ERROR'.

0x00000004 => 'DELETING',0x00000010 => 'PRINTING',

0x00000020 => 'OFFLINE', 0x00000040 ^> 'PAPEROUT'.

0x00000080 => 'PRINTED1, 0x00000100 -> 'DELETED1):

SADsPath = "WinNT://PrintServerName/PrintQueueNamc":

$p = Win32: :GLE->GetObject($AQsPath) or

die "Невозможно лолучип, SADsPaV'\'i

$jobs = $p->PrintJobs(); foreach $job (in $jobs){ print $]ob->{User( .

$status{$job->{status}} . "\n"; }

Каждое задание можно приостановить (Раиse()) и продолжить.

Работа со службами NT/2000 через ADSI

В последнем наборе примеров рассмотрим, как находить, запускать и останавливать службы на машине с NT/2000. Как и другие примеры из этой главы, эти короткие программки необходимо запускать с достаточными привилегиями для осуществления выполняемых действий.

Для получения списка служб на машине и их состояний можно использовать такую программу:

us о w.l п32 : . ol& 1 г П эта таблица получена из раздела

Я 'Active Directory Service Interfaces 2.5->ADSI fieference->

И ADSI Interfaces->Dynamic Object Inter 'acec

» IADsServiceOperatio:iS Proper*.> Methods' AC/SI

%status =

(0x00000001 => 'STOPPED'. 0x00000002= START_PEMDIHG',

0x00000003 => 'STGP_PENDING'. 0x00000004=:- RUNNING',

0x00000005 => 'CONTINUE_PENDING' .0x00000006 => ' PAUSE_PEtJDING '.

0x00000007 => 'PAUSED'. 0x00000008 => 'ERROR'):

SADsPath = "W]nNT://DomainNarr,e/ConiputerNa!ne, computer":

$C = Win32: :OLE->GctObj'oct($ADsPath) or die "Невозможно получить $ADsPatn\;i":

foreach $adsobj (in $c){ print Sadsobj^tDisplayNarr.

if ($adsobj->{Class) eq "Service"); }

Для запуска, остановки, приостановки или продолжения работы службы вызываются очевидные методы (Star t(), Stop() и т. д.). Вот как можно запустить службу Network Time на машине с Windows 2000, если ранее она была остановлена:

use Win32::OLE;

SADsPath = "WinNT://DomainName/ComputerName/W32Tirne, service";

$s = Win32::OLE->GetObject($ADsPath) or die "Невозможно получить $ADsPath\n";

$s->Start();

tf можно в этом месте проверять в цикле состояние

пока служба не будет запущена

Во избежание потенциальных конфликтов имен пользователей и компьютеров, можно переписать предыдущий пример:

use Win32::OLE;

$d = Win32: :OLE->GetObject("WinNT://Do(r'ain");

$c = $d->GetObiect( "Computer". Scornputername):

$s = $c->GetOb]ect("Service". "W32Tiiie"):

$s->Start():

Эти примеры должны подсказать вам, какой контроль над системой можно получить при помощи ADSI из Perl. Службы каталогов и их интерфейсы могут быть весьма могущественной частью вашей компьютерной инфраструктуры.




Содержание  Назад  Вперед