From b47ea62a3c640e3674faa63dc7d5a0c7c65ba417 Mon Sep 17 00:00:00 2001 From: David Geeraerts Date: Tue, 26 Jan 2021 10:27:35 -0800 Subject: [PATCH] Version 0.7.0 (2021-01-26) - See ChangeLog for details --- ADDS_Tool.cmd | 197 +++++++++++++++++++++----------------------------- ChangeLog.md | 8 +- SHA256.txt | 2 +- 3 files changed, 88 insertions(+), 119 deletions(-) diff --git a/ADDS_Tool.cmd b/ADDS_Tool.cmd index 84791d7..0e6f4ae 100644 --- a/ADDS_Tool.cmd +++ b/ADDS_Tool.cmd @@ -39,8 +39,8 @@ @Echo Off @SETLOCAL enableextensions SET $PROGRAM_NAME=Active_Directory_Domain_Services_Tool -SET $Version=0.6.0 -SET $BUILD=2021-01-22 08:30 +SET $Version=0.7.0 +SET $BUILD=2021-01-26 09:15 Title %$PROGRAM_NAME% Prompt ADT$G color 8F @@ -839,6 +839,7 @@ GoTo skipSUNS echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" :: Detailed Output FOR /F "USEBACKQ tokens=* delims=" %%N IN ("%$LogPath%\var\var_Last_Search_DN.txt") DO ( + call :SM @powershell Write-Host "Processing verbose..." -ForegroundColor DarkYellow @powershell Write-Host "%%N" -ForegroundColor DarkGray DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr name cn userPrincipalName displayName %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" @@ -886,171 +887,133 @@ GoTo skipSUNS IF %ERRORLEVEL% EQU 1 GoTo SUU ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::Search User first and last name::::::::::::::::::::::::::::::::::::::::::: :SUFL - :: Search User first and last name - taskkill /F /FI "WINDOWTITLE eq %$LAST_SEARCH_LOG% - Notepad" 2>nul 1>nul - SET $LAST_SEARCH_ATTRIBUTE=FirstLast + SET $SEARCH_ATTRIBUTE=FirstLast-Names + SET $SEARCH_KEY= + SET $SEARCH_KEY_USER_FIRST= + SET $SEARCH_KEY_USER_LAST= + :: Last Search Log Close - Notepad + call :LSLCN call :SM - SET $SEARCH_KEY_USER_FIRST= - @powershell Write-Host "givenName - First" -ForegroundColor Blue + :: Console output + @powershell Write-Host "Attribute: sn givenName" -ForegroundColor Blue + @powershell Write-Host "Attribute: sn:Surname LastName" -ForegroundColor Blue + @powershell Write-Host "Attribute: givenName FirstName" -ForegroundColor Blue @powershell Write-Host "Can use "*" wildcard for search." -ForegroundColor Gray - @powershell Write-Host "If left blank, will default to wildcard *" -ForegroundColor Magenta + @powershell Write-Host "If left blank, will abort." -ForegroundColor Magenta SET /P $SEARCH_KEY_USER_FIRST=User FirstName search key: - IF NOT DEFINED $SEARCH_KEY_USER_FIRST SET $SEARCH_KEY_USER_FIRST=* - call :SM - SET $SEARCH_KEY_USER_LAST= - @powershell Write-Host "sn - surename - Last" -ForegroundColor Blue - @powershell Write-Host "Can use * wildcard for search." -ForegroundColor Gray - @powershell Write-Host "If left blank, will default to wildcard *" -ForegroundColor Magenta + IF NOT DEFINED $SEARCH_KEY_USER_FIRST GoTo sUser SET /P $SEARCH_KEY_USER_LAST=User LastName search key: - IF NOT DEFINED $SEARCH_KEY_USER_LAST SET $SEARCH_KEY_USER_LAST=* + IF NOT DEFINED $SEARCH_KEY_USER_LAST GoTo sUser + SET $SEARCH_KEY=%$SEARCH_KEY_USER_FIRST% %$SEARCH_KEY_USER_LAST% call :SM echo Selected {%$SEARCH_KEY_USER_FIRST%} as FirstName search key. echo Selected {%$SEARCH_KEY_USER_LAST%} as LastName search key. @powershell Write-Host "Searching..." -ForegroundColor DarkYellow :: Start Elapse Time call :subSET - IF EXIST "%$LogPath%\%$LAST_SEARCH_LOG%" DEL /Q "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Start search %DATE% %Time% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo UTC: %$UTC% %$UTC_STANDARD_NAME% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Search Type: %$LAST_SEARCH_TYPE% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Search Attribute: %$LAST_SEARCH_ATTRIBUTE% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + :: Write log headers + call :sHeader echo Search Key FirstName: %$SEARCH_KEY_USER_FIRST% >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo Search Key LastName: %$SEARCH_KEY_USER_LAST% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Search AD Root: %$AD_BASE% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Search AD Scope: %$AD_SCOPE% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Domain Controller: %$DC% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Domain: %$DOMAIN% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" + echo. + :: Credentials + :: Domain credentials default to blank + SET $DOMAIN_CREDENTIALS= + if not "%$SESSION_USER%"=="%$DOMAIN_USER%" SET "$DOMAIN_CREDENTIALS=-u %$DOMAIN_USER% -p %$cUSERPASSWORD%" REM If Forestroot, then searches GC Global Catalog. - set "$AD_SERVER_SEARCH=-s %$DC%.%$DOMAIN%" - if %$AD_BASE%==forestroot SET "$AD_SERVER_SEARCH=-gc" + set "$AD_SERVER_SEARCH=-s %$DC%.%$DOMAIN%" + if %$AD_BASE%==forestroot SET "$AD_SERVER_SEARCH=-gc" + :: Debug if %$DEGUB_MODE% EQU 1 CALL :fVarD - if %$SORTED% EQU 1 GoTo jumpSUFLS - if "%$SESSION_USER%"=="%$DOMAIN_USER%" ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name distinguishedName %$AD_SERVER_SEARCH% > "%$LogPath%\var\var_Last_Search_N_DN.txt") ELSE ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name distinguishedName %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% > "%$LogPath%\var\var_Last_Search_N_DN.txt" - ) - if "%$SESSION_USER%"=="%$DOMAIN_USER%" ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name %$AD_SERVER_SEARCH% > "%$LogPath%\var\var_Last_Search_N.txt") ELSE ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% > "%$LogPath%\var\var_Last_Search_N.txt" - ) - if "%$SESSION_USER%"=="%$DOMAIN_USER%" ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr distinguishedName %$AD_SERVER_SEARCH% > "%$LogPath%\var\var_Last_Search_DN.txt") ELSE ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr distinguishedName %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% > "%$LogPath%\var\var_Last_Search_DN.txt" - ) - if %$SORTED% NEQ 1 GoTo skipSUFLS + :: Check for sorted + if %$SORTED% EQU 1 GoTo jumpSUFLS + :: Unsorted + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name distinguishedName %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% > "%$LogPath%\var\var_Last_Search_N_DN.txt" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr distinguishedName %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% > "%$LogPath%\var\var_Last_Search_DN.txt" + GoTo skipSUFLS :jumpSUFLS - if "%$SESSION_USER%"=="%$DOMAIN_USER%" ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name distinguishedName %$AD_SERVER_SEARCH% | sort > "%$LogPath%\var\var_Last_Search_N_DN.txt") ELSE ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name distinguishedName %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% | sort > "%$LogPath%\var\var_Last_Search_N_DN.txt" - ) - if "%$SESSION_USER%"=="%$DOMAIN_USER%" ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name %$AD_SERVER_SEARCH% | sort > "%$LogPath%\var\var_Last_Search_N.txt") ELSE ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% | sort > "%$LogPath%\var\var_Last_Search_N.txt" - ) - if "%$SESSION_USER%"=="%$DOMAIN_USER%" ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr distinguishedName %$AD_SERVER_SEARCH% | sort > "%$LogPath%\var\var_Last_Search_DN.txt") ELSE ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr distinguishedName %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% | sort > "%$LogPath%\var\var_Last_Search_DN.txt" - ) - + :: Sorted + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr name distinguishedName %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% | sort > "%$LogPath%\var\var_Last_Search_N_DN.txt" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(givenName=%$SEARCH_KEY_USER_FIRST%)(sn=%$SEARCH_KEY_USER_LAST%))" -attr distinguishedName %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% | sort > "%$LogPath%\var\var_Last_Search_DN.txt" :skipSUFLS - :: Main output - FOR /F "tokens=3 delims=:" %%K IN ('FIND /I /C "=" "%$LogPath%\var\var_Last_Search_DN.txt"') DO echo %%K> "%$LogPath%\var\var_Last_Search_Count.txt" + :: Check results + FOR /F "tokens=3 delims=:" %%K IN ('FIND /I /C "=" "%$LogPath%\var\var_Last_Search_DN.txt"') DO echo %%K> "%$LogPath%\var\var_Last_Search_Count.txt" :: remove leading space FOR /F "tokens=1 delims= " %%P IN (%$LogPath%\var\var_Last_Search_Count.txt) DO echo %%P> "%$LogPath%\var\var_Last_Search_Count.txt" - SET /P $LAST_SEARCH_COUNT= < "%$LogPath%\var\var_Last_Search_Count.txt" + SET /P $LAST_SEARCH_COUNT= < "%$LogPath%\var\var_Last_Search_Count.txt" + call :SM + IF %$LAST_SEARCH_COUNT% EQU 0 ( + echo Number of search results: %$LAST_SEARCH_COUNT% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + echo End search: %DATE% %Time% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + TYPE "%$LogPath%\%$LAST_SEARCH_LOG%" >> "%$SEARCH_SESSION_LOG%" + @powershell Write-Host "Nothing found! Try again with broader wildcard" -ForegroundColor Red + GoTo skipSUFL + ) + :: Main output echo Number of search results: %$LAST_SEARCH_COUNT% >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Number of search results: %$LAST_SEARCH_COUNT% - IF %$LAST_SEARCH_COUNT% EQU 0 GoTo jumpSUFLO + echo Number of search results: %$LAST_SEARCH_COUNT% @powershell Write-Host "Processing..." -ForegroundColor DarkYellow echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo User Names returned: >> "%$LogPath%\%$LAST_SEARCH_LOG%" + echo User Name User DN >> "%$LogPath%\%$LAST_SEARCH_LOG%" :: Munge N_DN file IF EXIST "%$LogPath%\var\var_Last_Search_N_DN_munge.txt" DEL /Q /F "%$LogPath%\var\var_Last_Search_N_DN_munge.txt" FOR /F "skip=2 delims=" %%M IN ('FIND /I /V "distinguishedName" "%$LogPath%\var\var_Last_Search_N_DN.txt"') DO echo %%M >> "%$LogPath%\var\var_Last_Search_N_DN_munge.txt" type "%$LogPath%\var\var_Last_Search_N_DN_munge.txt" > "%$LogPath%\var\var_Last_Search_N_DN.txt" type "%$LogPath%\var\var_Last_Search_N_DN.txt" >> "%$LogPath%\%$LAST_SEARCH_LOG%" - - :: Munge DN file IF EXIST "%$LogPath%\var\var_Last_Search_DN_munge.txt" DEL /Q /F "%$LogPath%\var\var_Last_Search_DN_munge.txt" FOR /F "skip=2 delims=" %%M IN ('FIND /I /V "distinguishedName" "%$LogPath%\var\var_Last_Search_DN.txt"') DO echo %%M >> "%$LogPath%\var\var_Last_Search_DN_munge.txt" type "%$LogPath%\var\var_Last_Search_DN_munge.txt" > "%$LogPath%\var\var_Last_Search_DN.txt" - echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" + IF %$SUPPRESS_VERBOSE% EQU 1 GoTo jumpSUFLO echo ---------------------------------------------------------------------- >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo Verbose Output: >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo ---------------------------------------------------------------------- >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" - :: Detailed Output - if NOT "%$SESSION_USER%"=="%$DOMAIN_USER%" GoTo jumpSUFLL - :: Session user is a domain user FOR /F "USEBACKQ tokens=* delims=" %%N IN ("%$LogPath%\var\var_Last_Search_DN.txt") DO ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr name cn userPrincipalName %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr sn givenName %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr displayName %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo User DN: %%N >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" + call :SM + @powershell Write-Host "Processing verbose..." -ForegroundColor DarkYellow + @powershell Write-Host "%%N" -ForegroundColor DarkGray + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr name cn userPrincipalName displayName %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr sn givenName %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + echo User DN: %%N >> "%$LogPath%\%$LAST_SEARCH_LOG%" + echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo Organization Information: >> "%$LogPath%\%$LAST_SEARCH_LOG%" - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr company %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr department %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr title %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr description %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr manager %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr company %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr department %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr title %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr description %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr manager %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo Contact Information: >> "%$LogPath%\%$LAST_SEARCH_LOG%" - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr mail %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr telephoneNumber %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr mail %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr telephoneNumber %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo Location Information: >> "%$LogPath%\%$LAST_SEARCH_LOG%" - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr physicalDeliveryOfficeName streetAddress l st postalCode co %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo Details: >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr * %$AD_SERVER_SEARCH% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo ---------------------------------------------------------------------- >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%") - ) - GoTo jumpSUFLO -:jumpSUFLL - :: Session user is a local user - FOR /F "USEBACKQ tokens=* delims=" %%N IN ("%$LogPath%\var\var_Last_Search_DN.txt") DO ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr name cn userPrincipalName %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr sn givenName %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr displayName %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo User DN: %%N >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr physicalDeliveryOfficeName streetAddress l st postalCode co %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" - echo Organization Information: >> "%$LogPath%\%$LAST_SEARCH_LOG%" - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr company %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr department %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr title %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr description %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr manager %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo Contact Information: >> "%$LogPath%\%$LAST_SEARCH_LOG%" - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr mail %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr telephoneNumber %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo Location Information: >> "%$LogPath%\%$LAST_SEARCH_LOG%" - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr physicalDeliveryOfficeName streetAddress l st postalCode co %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo Details: >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr * %$AD_SERVER_SEARCH% -u %$DOMAIN_USER% -p %$cUSERPASSWORD% >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo ---------------------------------------------------------------------- >> "%$LogPath%\%$LAST_SEARCH_LOG%") & ( - echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%") - ) + echo Details: >> "%$LogPath%\%$LAST_SEARCH_LOG%" + DSQUERY * %$AD_BASE% -scope %$AD_SCOPE% -limit %$sLimit% -filter "(&(objectClass=user)(distinguishedName=%%~N))" -attr * %$AD_SERVER_SEARCH% %$DOMAIN_CREDENTIALS% >> "%$LogPath%\%$LAST_SEARCH_LOG%" + echo ---------------------------------------------------------------------- >> "%$LogPath%\%$LAST_SEARCH_LOG%" + echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" +) :jumpSUFLO - call :subTLT + :: Search counter increment + Call :fSC + :: Total Lapse TIme + call :subTLT + :: Refresh HUD + call :SM echo Total Search Time: %$TOTAL_LAPSE_TIME% echo Total Search Time: %$TOTAL_LAPSE_TIME% >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo End search: %DATE% %Time% >> "%$LogPath%\%$LAST_SEARCH_LOG%" echo. >> "%$LogPath%\%$LAST_SEARCH_LOG%" - IF %$LAST_SEARCH_COUNT% EQU 0 @powershell Write-Host "Nothing found! Try again with broader wildcard" -ForegroundColor Red - IF %$LAST_SEARCH_COUNT% EQU 0 GoTo skipSUFL - :: Search counter increment - Call :fSC + type "%$LogPath%\%$LAST_SEARCH_LOG%" >> "%$LogPath%\%$SEARCH_SESSION_LOG%" :: Open log files @explorer "%$LogPath%\%$LAST_SEARCH_LOG%" - type "%$LogPath%\%$LAST_SEARCH_LOG%" >> "%$LogPath%\%$SEARCH_SESSION_LOG%" :skipSUFL echo Search User Again? @@ -1059,6 +1022,8 @@ GoTo skipSUNS IF %ERRORLEVEL% EQU 1 GoTo SUFL ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + :SUDN :: Search User display name taskkill /F /FI "WINDOWTITLE eq %$LAST_SEARCH_LOG% - Notepad" 2>nul 1>nul diff --git a/ChangeLog.md b/ChangeLog.md index 0b732c6..23d6160 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -19,6 +19,12 @@ --- +## Version 0.7.0 Build: 2021-01-26 +#### Changed +- Search by User First and last name updated with template + +--- + ## Version 0.6.0 Build: 2021-01-22 #### Added - sAMaccount to Universal attribute list @@ -30,8 +36,6 @@ #### Removed - Last Search type from Search main menu ---- - ## Version 0.5.0 Build: 2021-01-15 #### Added diff --git a/SHA256.txt b/SHA256.txt index 4e54233..4f5de56 100644 --- a/SHA256.txt +++ b/SHA256.txt @@ -1 +1 @@ -46a5c5fbce87b433e20af9297455b8a3956f774c755e85bc4049aa81d2d090c0 +a336cef77350a66e41f332634c4926f09b9253c7a99cff624ba4f6db0434ec17