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

OCS Inventory NG – usefull SQL scripts

Most important tables:
accountinfo – main table witch contain ID of device
[HARDWARE_ID] [TAG] [fields_4] [fields_5] [fields_6]…

hardware – OS info.
[ID] [DEVICEID] [NAME] [WORKGROUP] [USERDOMAIN] [OSNAME] [OSVERSION] [OSCOMMENTS] [PROCESSORT] [] ……

bios – hardware info.
[HARDWARE_ID] [] [] [] [] [] [] [] …….

itmgmt_comments – commants, very usefull

Notes: It is possible to create Your own fields, for example Inventory number assigned inside company for every device. In this case fields_4. Those fields are created in accountinfo table.
Continue reading

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

Zabbix – monitorowanie systemu Windows. Instalacja i konfiguracja agenta.

Po instalacji klienta należy edytować jego plik konfiguracyjny znajdujący się w katalogu c:\Program Files\Zabbix Agent\zabbix_agentd.conf i uzupełnić / odkomentować następujące parametry (w Linux config znajduje się w lokalizacji /etc/zabbix/zabbix_agentd.conf):

Server=IP_Serwera
ServerActive=IP_Serwera
Hostname=Nazwa_hosta_na_którym_uruchomiony_jest_aktualnie_agent

Przy czym tylko parametr Server wymagany jest przy konfiguracji agenta w trybie passive.
Parametry ServerActive oraz Hostname wymagane są przy konfiguracji agenta w trybie active. UWAGA: Również w przypadku konfiguracji agenta w trybie active po stronie serwera musi być wpisana taka sama nazwa hosta Hostname. Parametr Interface nie jest wymagany (jest wymagany w przypadku konfiguracji agenta w trybie passive, SNMP i innych protokołów).

Test połączenia serwera z klientem (polecenie należy wydać z poziomu serwera):

zabbix_get -s IP_Klienta -k system.hostname

Przydatne klucze (Item Key): wmi.get, perf_counter

Przykład użycia polecenia perf_counter (Wykaz liczników w systemie Windows można uzyskać uruchamiając linię komend jako administrator i wpisując polecenie typeperf.exe -q).
Np. perf_counter_en[„\Processor Information(_total)\% Interrupt Time”]

 

 

Przydatne linki:
https://www.zabbix.com/documentation/current/en/manual/config/items/itemtypes/zabbix_agent/win_keys
https://sbcode.net/zabbix/host-items/

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

Artykuł w budowie.

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

 

OCS Inventory – checking database size

SELECT
TABLE_NAME AS `Table`,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "ocsdb"
ORDER BY
(DATA_LENGTH + INDEX_LENGTH)
DESC;

With installed plugins: eventlogs, gpresult, officepack, services, sharedFolders, uptime, winusers and 900 reporting clients (agents) database size is something about 350 MB.