Перший скрипт для пошуку запущеного процесу (у нашому прикладі “chrome.exe“) та користувача на термінальному сервері та запису в лог файл. Замість процесу “chrome.exe” ви можете вказати будь-який інший:
$outputFile = "C:\temp\chrome_users.txt"
$processes = Get-WmiObject Win32_Process | Where-Object { $_.Name -eq "chrome.exe" }
$userList = @{}
foreach ($process in $processes) {
$userInfo = $process.GetOwner()
$username = "$($userInfo.Domain)\$($userInfo.User)"
if (-not $userList.ContainsKey($username)) {
$userList[$username] = $process.Name
}
}
$outFile = New-Object System.IO.StreamWriter($outputFile, $false, [System.Text.Encoding]::UTF8)
foreach ($user in $userList.Keys) {
$outFile.WriteLine("$user : chrome.exe")
}
$outFile.Close()
Write-Host "The user list is ready!"
Наступний скрипт шукає AD неактивних користувачів. У змінній $daysInactive вказуємо кількість неактивних днів. У змінній $ouPath робимо орієнтацію на певну OU в AD. Виведення в лог файл йде у форматі csv і його можна від форматувати і додати фільтри в excel-е.
$daysInactive = 90
$ouPath = "OU=buh,DC=users,DC=it-homyak,DC=com,DC=ua"
$timeThreshold = (Get-Date).AddDays(-$daysInactive)
$inactiveUsers = Get-ADUser -Filter {LastLogonDate -lt $timeThreshold} -SearchBase $ouPath -Property LastLogonDate | Select-Object Name, SamAccountName, LastLogonDate
$inactiveUsers | Export-Csv -Path "D:\inactive_users.csv" -NoTypeInformation -Encoding utf8
Цей скрипт шукає активні хости в мережі по масці та записує в лог файл IP та ім’я хоста.
$networkBase = "10.1."
$subnetStart = 100
$subnetMask = 23
$startIP = 0
$endIP = 511
$outputFile = "D:\ActiveHosts.txt"
Clear-Content -Path $outputFile
for ($i = $startIP; $i -le $endIP; $i++) {
$subnet = $subnetStart + [math]::Floor($i / 256)
$hostPart = $i % 256
$ipAddress = "$networkBase$subnet.$hostPart"
$ping = Test-Connection -ComputerName $ipAddress -Count 1 -Quiet
if ($ping) {
try {
$hostName = [System.Net.Dns]::GetHostEntry($ipAddress).HostName
} catch {
$hostName = "Unknown"
}
$result = "$ipAddress - $hostName"
Write-Output $result
Add-Content -Path $outputFile -Value $result
}
}
Write-Output "Весь список хостів записаний у $outputFile"
