Category Archives: Microsoft

Informacje nt. produktów rodziny Microsoft

Active Directory – odblokowanie konta i reset hasła Administratora

Aby odblokować i zresetować hasło Administratora należy uruchomić serwer z płyty instalacyjnej Windows Serwer (testowane na 2022) a następnie wejść do linii komend i wykonać poniższe kroki:
1) narzędziem DiskPart należy nadać literę partycji systemowej;

diskpart 
select disk 0
list partition
select partition 3
assign letter c

2) odpowiednio skonfigurować ponowne uruchomienie serwera oraz podmienić plik utilman.exe;

bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 15
c:
cd windows/system32
ren utilman.exe utilman.123
copy cmd.exe utilman.exe

3) Restart serwera. Po restarcie naciśnięcie klawisza F8 i wybranie opcji „Disable Early Launch Anti-Malware Driver”, przy logowaniu należy kliknąć na ikonkę kółeczka znajdującą się w dolnym prawym rogu. Zamiast narzędzia utilman.exe otworzy się cmd.exe – linia komend.

4) W linii komend należy wydać polecenia odblokowujące i zmieniające hasło użytkownikowi Administrator (również administratorowi domenowemu):

net user administrator /active:yes
net user administrator password
net user administrator password /domain

 

Active Directory i PowerShell – operacje na grupach

Wyświetlenie obiektów należących do grupy o nazwie GroupName

Get-ADGroupMember GroupName | Format-Table name

Wyświetlenie wszystkich grup, do których należy użytkownik o nazwie UserName

Get-ADPrincipalGroupMembership UserName | Format-Table name

Wyświetlenie użytkowników należących do grupy zabezpieczeń o nazwie SecureGroup.

Get-ADUser -filter 'memberOf -recursivematch "CN=SecureGroup, OU=IT, DC=domena, DC=local"' | Format-Table name

Dodanie użytkowników OU do grupy zabezpieczeń.

Get-ADUser -SearchBase ‘OU=nazwaOU,DC=test,DC=local’ -Filter * | ForEach-Object {Add-ADGroupMember -Identity ‘NazwaGrupyZabezpieczen’ -Members $_ }

Active Directory i PowerShell – tworzenie kopii zapasowej

#zdefiniowanie źródła
Get-WBVolume -AllVolumes
$vol = Get-WBVolume -VolumePath c:

#zdefiniowanie miejsca docelowego
$networkBackupLocation = New-WBBackupTarget -NetworkPath \\DC2\backups

#Włączenie polisy - ustawienie atrybutu SystemState na True
Add-WBSystemState -Policy backupPolicy 

#zdefiniowanie i konfiguracja polisy
$backupPolicy = New-WBPolicy
Add-WBVolume -Policy -$backupPolicy -Volume $vol
Add-WBBackupTarget -Policy $backupPolicy -Target $networkBackupLocation

#uruchomienie polisy
Start-WBBackup -Policy $backupPolicy

Automatyczny eksport zawartości płyty CD na serwer FTP

Skrypt tworzy obraz płyty CD/DVD włożonej do napędu, następnie kompresuje go z hasłem i wysyła na serwer FTP.
W tym konkretnym przypadku skrypt został przygotowany dla lekarza, który ma za zadanie włożyć płytę z badaniem pacjenta do napędu a następnie uruchomić skrypt, który następnie przed wysłaniem badania na serwer zapyta go o dane pacjenta i hasło do kompresji.
Poniżej instrukcja oraz sam skrypt:
1) Przekopiować pliki i foldery: winscp, oscdimg.exe, 7zip do katalogu c:\Windows\
2) Sprawdzić literę napędu CD/DVD, jeżeli inna niż „E” należy poprawić w skrypcie;
3) Badania będą zapisywane na pulpicie (%USERPROFILE%\desktop\badania).
Continue reading

Active Directory i Powershell – operacje na użytkownikach i komputerach

Artykuł w budowie (Będzie więcej skryptów 🙂

Odblokowanie wszystkich zablokowanych kont:

Search-ADAccount -LockOut | Unlock-ADAccount

Znalezienie użytkownika:

Get-ADUser -Filter 'Name -like "*userName"'

Reset hasła użytkownikowi userName:

Set-ADAccountPassword userName -NewPassword (Read-Host - AsSecureString 'New Password') -Reset

Automatyczny reset hasła wielu użytkownikom:

Add-Type -AssemblyName 'System.Web'

$userAccounts = 'user1', 'user2'
foreach ($account in $userAccounts) {
$plain_text_password = [System.Web.Security.Membership]::GeneratePassword(13, 3)
Write-Host "Resetting $account password to $plain_text_password ..."
Set-ADAccountPassword $account -NewPassword ($plain_text_password | convertto-securestring -asplaintext -force)
}

Dodanie komputera do domeny

add-computer –domainname sieciunia.local -Credential sieciunia.local\administrator -restart –force

Wyświetlenie użytkowników nieaktualnych, którzy zmieniali hasło dalej niż 31 dni temu i wyłączenie / przeniesienie / usunięcie ich:

$password_Age = (Get-Date).adddays(-31)
$users_with_old_password = Get-ADUser -Filter * -Properties PasswordLastSet | 
Where-Object {
$_.PasswordLastSet -and
$_.PasswordLastSet -lt $password_Age
}
$users_with_old_password 

#Wylaczenie kont w ktorych haslo nie bylo zmieniane
$users_with_old_password | Set-ADUser -Enabled $false

#Wlaczenie konta administratora jesli wczesniej zostalo omylkowo wylaczone
$adminAccount = Get-ADUser -Filter * -Properties Name | ? { $_.Name -like 'admin*' }
$adminAccount | Set-ADUser -Enabled $true

#Znalezienie wszystkich wylaczonych kont
$disabledUsersAccounts = Search-ADAccount -AccountDisabled -UsersOnly

#przeniesienie uzytkownikow do nowego OU o nazwie zablokowani użytkonicy
$disabledUsersAccounts | Move-ADObject -TargetPath "OU=Disabled Users,DC=sieciunia, DC=local"

#usowanie kont za potwierdzeniem (nie mozna usowac kont wbudowanych)
$disabledUsersAccounts | Remove-ADUser -Confirm:$false

 

PowerShell – wyszukiwanie pliku o danej nazwie i w przypadku jego znalezienia wysłanie powiadomienia na e-mail.

Zadaniem poniższego skryptu PS jest przeszukiwanie zasobu sieciowego w poszukiwaniu plików mających w nazwie datę wczorajszą, oraz wysłania ich nazw w wiadomości e-mail w przypadku ich znalezienia.

$emailFrom = 'powiadomienia@domena.pl' 
$secstring = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000060a18ed3a9312c4c939f8408d224ed9f00000000020000000000106600000001000020000000e0d0d688c598b0dc944b81409d0f7ab8dea52d0612f7d5e56b84c09d0d13eb07000000000e800000000200002000000036d3059ac438090bdbb1a0b4b2bb2fa7a5ffab65d96fa02a1aeab9667b54bb5f20000000a1f6442ff2bb3d90f1fd93b06d9178eec8239eb71fe330ff3c8fe5167b9120d1400000002dca53a7f97ac0d52ea085d15fa3dd501aec6e7eb72e5c23577ec53ef7f40c498573d0d7f58d57ca54521b0a4ffc77618d33178363f897ec08a72305078af168'
$credential = New-Object System.Management.Automation.PSCredential($emailFrom, ($secstring | ConvertTo-SecureString))
$patch = '\\192.168.5.2\pliki\'
$date = Get-Date -Format "yyyy_MM_dd"
$day_minus_one = (Get-Date).AddDays(-1) | Get-Date -Format "yyyy_MM_dd"
$time = get-Date -Format "HH_mm"
$emailTo = "odbiorca1@domena.pl" , "odbiorca2@domena.pl"

$files = Get-ChildItem -path $patch\*$day_minus_one.pdf
"Wykonanie skryptu dnia $date o godzinie $time" >> $patch\script_activity.txt

if ($files) { 
$files | Export-CSV $patch\revoke_privileges_$date.txt 
$body = $files | Out-String
Send-MailMessage -To $emailTo -From $emailFrom -encoding utf8 -Subject 'Odbior uprawnien uzytkownikowi' -Body "Ponizej wykazane sa nazwy plikow - skanow wnioskow o nadanie uprawnien czasowych do pracy w systemie, ktore trzeba wycofac. $body Aby skrypt spelnial swoje zadanie data odebrania uprawnienia powinna znajdowac sie na koncu nazwy pliku PDF w formacie rrrr_MM_dd, tj. np KowalskiJanek_2023_05_05_W_KB_2023_05_10.pdf." <# -Attachments $patch\revoke_privileges_$date.txt #> -Credential $credential -SmtpServer 'server.smtp.com.pl' -Port 587
}

else { 
exit 
}

SecureString (zaszyfrowane hasło – w tym przypadku do konta e-mail) można uzyskać konwertując hasło za pomocą komendy:

"haslo_czystym_tekstem" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "d:\Password.txt"

SecureString może odkodować wyłącznie ten użytkownik Windows, który je zakodował, dlatego też najbezpieczniej jest utworzyć dedykowane konto Windows, które będzie używane wyłącznie do uruchamiania skryptu.
Skrypt PS można również skonwertować do pliku *.exe np. przy pomocy programu Win-PS2EXE-GUI. Jednak nawet z pliku exe można wyciągnąć SecureStinga.

Źródło:

https://stackoverflow.com/questions/14319272/powershell-scan-folder-for-certain-file-name-and-write-to-a-log-file-and-email
https://www.itprotoday.com/powershell/how-encrypt-powershell-scripts
https://powershellguru.com/instant-guide-to-convert-ps1-to-exe/

Aktualizacja głównego kontrolera domeny – przenoszenie ról FSMO

  1. Stworzenie snapa kontrolera z którego przerzucamy role;
  2. Dodanie siebie (admina) do grupy: Administratorzy przedsiębiorstwa. Po dodaniu do grupy przelogować się. Dodanie do grup jest niezbędne do przeniesienia ról unikalnych dla lasu, tj: schemamaster, domainnamingmaster
  3. Przerzucenie ról na inny kontroler:
    Move-ADDirectoryServerOperationMasterRole -Identity sw-dc02 -OperationMasterRole pdcemulator, ridmaster, infrastructuremaster, schemamaster, domainnamingmaster
  4. Po przeniesieniu ról sprawdzić czy role zostały przeniesione
    Get-ADForest domena.local | Format-Table SchemaMaster, DomainNamingMaster
    Get-ADDomain domena.local | format-table PDCEmulator, RIDMaster, InfrastructureMaster
  5. Aktualizacja kontrolera z którego przenieśliśmy role.
  6. Zweryfikowanie poprawności działania serwera i poprawności replikacji z innymi kontrolerami domeny.
  7. Przerzucenie ról z powrotem.
  8. Zweryfikowanie poprawności replikacji z innymi kontrolerami domeny oraz działania samego serwera po zainstalowaniu nowych łatek.
  9. Skasowanie snapa z VMware.