Get-ChildItem d:\programy -Recurse | Where-Object {$_.Length -gt 100MB} | Select Name, Length, FullName
Category Archives: PowerShell
PowerShell – XPath – pozyskiwanie danych z pliku XML
$Location = "C:\FileFolder" $Path = "$($Location)\dane.xml" $XPath = "/element1/podelement2/nazwa" Select-Xml -Path $Path -XPath $Xpath | Select-Object -ExpandProperty Node
PowerShell – usuwanie duplikatów plików
Get-ChildItem -R -Path "D:\fileFolder\" | ? { $_.Name -like '*(1).mp4' } | Remove-Item
Powershell – masowa zmiana nazw plików
Get-ChildItem -Path e:\pliki\*.txt -File | ForEach-Object { $currentFile = $_.Name $newName = $_.Name -replace "stary_fragment_nazwy", "nowy_fragment_nazwy" Rename-Item -path $_ -NewName $newName Write-Host "Renamed file $currentFile to $newName" }
lub inaczej:
get-childitem *txt | foreach {
rename-item $_ $_.name.replace("stary_fragment_nazwy","nowy_fragment_nazwy")
}
Więcej nt. zmiany nazw plików: https://lazyadmin.nl/powershell/rename-files/
Powershell – Wyświetlenie plików oraz folderów których ścieżka dostępu przekracza x znaków
Get-ChildItem -path e:\ -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {$_.FullName.Length -gt 250}
Wyświetlenie liczby plików / folderów których ścieżka dostępu przekracza 250 znaków:
write-host(Get-ChildItem -path e:\ -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {$_.FullName.Length -gt 250}).count
Po przełączniku -Recourse można użyć przełącznika -File lub -Directory.
Powershell – monitorowanie temperatury CPU
function Get-Temperature { $t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi" $returntemp = @() foreach ($temp in $t.CurrentTemperature) { $currentTempCelsius = ($temp / 10) - 273.15 $returntemp += $currentTempCelsius.ToString() } return $returntemp } Get-Temperature
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 – zmiana domyślnych OU przy tworzeniu kont użytkowników i komputerów
Do zmiany domyślnego OU, w którym zakładane są nowe konta komputerów i użytkowników służy komenda PS rediusr:
redirusr "OU=NowyOU,DC=firma,DC=local" redircmp "OU=NowyOU,DC=firma,DC=local"
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
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