Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] IF. пустой вывод опрашиваемой команды (http://forum.oszone.net/showthread.php?t=269564)

Elven 08-10-2013 19:12 2230923

IF. пустой вывод опрашиваемой команды
 
Тему назвал коряво, если господа модераторы придумают как ее лучше назвать прошу переименовать.

Решил проверить нету ли каких не отключенных пользователей в домене и естественно не хочу перекапывать их всех руками. Короче, ситуация такая: нужно писать в файл логин в том случае если вывод команды является пустым.
в моем представлении это выглядит приблизительно так:

@echo off
for /F %%a in ('dsquery user -inactive 150 -limit 0 -o samid') do (
dsquery user -samid %%~a -disabled
[условие проверяющие является ли вывод предыдущей команды пустым]
echo %%~a is zombie!!! >> d:\zombie.log
)

Если кто предложит вариант кошернее - буду рад, может я тут изобретательством виласапеда занимаюсь :).
c errorlevel экспериментировал как только не. в эту сторону походу копать бесполезно.

Elven 15-10-2013 11:53 2234741

Решил сам, правда с костылем.
Код:

@echo off
for /F %%a in ('dsquery user -inactive 12 -limit 0 -o samid') do (
dsquery user -samid %%~a -disabled | find "CN"
if errorlevel 1 (
echo %%~a >> d:\zombie.log
)
)

после вывода который должен быть пустым добавляем "FIND" и тут уже используем ERRORLEVEL (сразу после dsquery он в любом случае возвращал "0")

Iska 15-10-2013 16:02 2234921

Ищете «мёртвые души»?
Цитата:

Цитата Elven
Решил проверить нету ли каких не отключенных пользователей в домене и естественно не хочу перекапывать их всех руками. »

Оснастка «ADUC», \Действие\Найти…; Найти: Особый поиск, Вкладка «Дополнительно», поле «Введите запрос LDAP:»:
Код:

(&(samAccountType=805306368)(lastLogon<=129355919658983718)(!userAccountControl:1.2.840.113556.1.4.803:=2))


На PowerShell:
читать дальше »
Код:

$iInactiveDateFrom = ((Get-Date).AddDays(-150 * 7)).ToFileTimeUtc()

$oConnection = New-Object -ComObject "ADODB.Connection"
$oConnection.Provider = "ADSDSOObject"
$oConnection.Open("ADSearch")
       
$sDefaultNamingContext = ([System.DirectoryServices.DirectoryEntry]"LDAP://rootDSE").defaultNamingContext

$oRecordset = $oConnection.Execute( `
    "<LDAP://$sDefaultNamingContext>;" + `
    "(&(samAccountType=805306368)(lastLogon<=$iInactiveDateFrom)(!userAccountControl:1.2.840.113556.1.4.803:=2));" + `
    "samAccountName;subtree" `
)

while(-not $oRecordset.EOF) {
    Write-Host $oRecordset.Fields.Item("samAccountName").Value
    $oRecordset.MoveNext()
}

$oRecordset.Close()
$oConnection.Close()



Время: 16:56.

Время: 16:56.
© OSzone.net 2001-