Powershell небольшая шпаргалка
Эта заметка больше для себя, так как тут будет всего парочка маленьких команд. 🙂 Небольшая подборка скриптов на каждый день, ну может и не каждый.
Скриптами сложно назвать однострочные команды, хотя кому как. И так, обещал парочку, вышло чуть больше, ну, это как обычно в жизни 🙂
Разблокировать все учетные записи пользователей одновременно в Active Directory:
1 |
Search-ADAccount -Lockedout | Unlock-AdAccount |
Найти во всех txt файлах нужную строчку:
1 |
Select-String -Path *.txt -Pattern 'find-text' |
Запустить консоль Powershell с повышенными правами:
1 |
start-process powershell -verb runAs |
Поиск пользователя:
1 2 3 4 5 |
$users = Get-Content C:\temp\SamAccountName.txt foreach($user in $users) { Get-ADUser -Filter { SamAccountName -eq $user } -Properties AccountExpirationDate | Select SamAccountName, AccountExpirationDate | Out-file C:\temp\SamAccountName--final.txt -Append } |
Сканер портов:
1 |
foreach ($port in 1..1024) {If (($a=Test-NetConnection localhost -Port $port -WarningAction SilentlyContinue).tcpTestSucceeded -eq $true){ "TCP port $port is open!"}} |
Сравнение пользователей из файла Excel с данными в Active Directory. Сравнение идет только по имени пользователя!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$CSV = Import-CSV -Path 'C:\temp\users1C.csv' -Delimiter ";" # -Encoding default|?{!$_.value} $LogFile = 'C:\temp\log.txt' "Name,Search Result" | Add-Content $LogFile ForEach ($User in $CSV){ $UserName = $User.Name $ADUserSearch = Get-AdUser -Filter {(Name -eq $UserName) -and (Enabled -eq $true)} echo "Search for active user $UserName" if ($ADUserSearch){ echo "Found"; "$UserName, Found" | Add-Content $LogFile Start-Sleep -s 3 } else{ echo "NOT FOUND"; "$UserName, Not Found" | Add-Content $LogFile Start-Sleep -s 3 } } |
Выгрузка пользователей из Active Directory:
1 2 3 4 5 |
Get-ADUser -Properties Enabled, SamAccountName, DisplayName, Title, Department, Company, Telephonenumber, EmailAddress, ` Manager, PasswordNeverExpires -Filter * | ?{$_.name -notmatch 'Healthmailbox'} | select Enabled, PasswordNeverExpires, ` SamAccountName, DisplayName, Title, Department, Company, Telephonenumber, EmailAddress, @{label="Manager"; ` expression={(Get-ADUser $_.Manager -Properties DisplayName).DisplayName}} | ` Export-Csv "C:\temp\Logs\Выгрузка из AD $(get-date -f "yyyy/MM/dd").csv" -Delimiter ';' -NoTypeInformation -Encoding UTF8 |
Посчитать количество объектов в определенном OU Active Directory:
1 2 3 4 5 6 7 |
$ous = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=Users,DC=flammlin,DC=local" | Select-Object -ExpandProperty DistinguishedName $ous | ForEach-Object{ [psobject][ordered]@{ OU = $_ Count = (Get-ADUser -Filter * -SearchBase "$_").count } } |
Один комментарий
petrov.ivan
Не совсем корректно — Посчитать количество объектов в определенном OU Active Directory:
Так как используется Get-ADUser, получается, что считаем только юзеров!
Следующая команда посчитает все объекты об учётных записях компьютеров:
(Get-ADComputer -filter * -SearchBase «OU=Servers,DC=Contoso,DC=local»).count