Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

POWERSHELL How do I change this code to search a range of usernames and not just by one username? # ******************************************************************************** # # Script Name:

POWERSHELL

How do I change this code to search a range of usernames and not just by one username?

# ******************************************************************************** # # Script Name: QueryUsersForLastLogon.ps1 # Version: 1.0 # Location: # Applies to: Computers # # Description: This script searches for a specific, logged on user on all or # specific Computers by checking the process "explorer.exe" and its owner. # # ********************************************************************************

#Set variables $progress = 0

#Get Admin Credentials Function Get-Login { Clear-Host Write-Host "Please provide admin credentials (for example DOMAIN\admin.user and your password)" $Global:Credential = Get-Credential } Get-Login

#Get Username to search for Function Get-Username { Clear-Host $Global:Username = Read-Host "Enter username you want to search for" if ($Username -eq $null){ Write-Host "Username cannot be blank, please re-enter username!" Get-Username } $UserCheck = Get-ADUser $Username if ($UserCheck -eq $null){ Write-Host "Invalid username, please verify this is the logon id for the account!" Get-Username } } Get-Username

#Get Computername Prefix for large environments Function Get-Prefix { Clear-Host $Global:Prefix = Read-Host "Enter a prefix of Computernames to search on (CXX*) use * as a wildcard or enter * to search on all computers" Clear-Host } Get-Prefix

#Start search $computers = Get-ADComputer -Filter {Enabled -eq 'true' -and SamAccountName -like $Prefix} $CompCount = $Computers.Count Write-Host "Searching for $Username on $Prefix on $CompCount Computers`n"

#Start main foreach loop, search processes on all computers foreach ($comp in $computers){ $Computer = $comp.Name $Reply = $null $Reply = test-connection $Computer -count 1 -quiet if($Reply -eq 'True'){ if($Computer -eq $env:COMPUTERNAME){ #Get explorer.exe processes without credentials parameter if the query is executed on the localhost $proc = gwmi win32_process -ErrorAction SilentlyContinue -computer $Computer -Filter "Name = 'explorer.exe'" } else{ #Get explorer.exe processes with credentials for remote hosts $proc = gwmi win32_process -ErrorAction SilentlyContinue -Credential $Credential -computer $Computer -Filter "Name = 'explorer.exe'" } #If $proc is empty return msg else search collection of processes for username if([string]::IsNullOrEmpty($proc)){ write-host "Failed to check $Computer!" } else{ $progress++ ForEach ($p in $proc) { $temp = ($p.GetOwner()).User Write-Progress -activity "Working..." -status "Status: $progress of $CompCount Computers checked" -PercentComplete (($progress/$Computers.Count)*100) if ($temp -eq $Username){ write-host "$Username is logged on $Computer" } } } } } write-host "Search done!"

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Repairing And Querying Databases Under Aggregate Constraints

Authors: Sergio Flesca ,Filippo Furfaro ,Francesco Parisi

2011th Edition

146141640X, 978-1461416401

More Books

Students also viewed these Databases questions

Question

14. What delivery method is most effective for speakers?

Answered: 1 week ago