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 экспериментировал как только не. в эту сторону походу копать бесполезно.
|
Решил сам, правда с костылем.
Код:
@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")
|
Ищете «мёртвые души»?
Цитата:
Цитата 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.
© OSzone.net 2001-