Полезные скрипты PowerShell для повседневных задач администрирования Windows ч 2
В продолжение предыдущей заметки приведу еще несколько примеров полезных скриптов для администрирования Windows.
Предположим, требуется массово поменять какие-то параметры(например, сменилось название организации, или ее адрес).
Для этого создаем CSV-файл с полями(приведен обший пример, поля в конкретном случае будут определятся тем, что вам необходимо изменить):
-
Name
-
Surname
-
E-Mail
-
Phone
-
Organization
-
JobTitle
mport-Module ActiveDirectory
$Users = Import-CSV $1 –Delimiter “;”
Foreach($CurrentUser in $Users) {
$Name = $CurrentUser.Name
$Surname = $CurrentUser.Surname
$Email = $CurrentUser.E-Mail
$Phone = $CurrentUser.Phone
$Organization = $CurrentUser.Organization
$JobTitle = $CurrentUser.JobTitle
$Login = (Get-ADuser –Filter {GivenName –eq $Name –and Surname –eq $Surname}).SamAccountName #поиск УЗ пользователя
Set-ADUser $Login –EmailAddress $Email –MobilePhone $Phone –Company $Organization –Title $JobTitle
}
Сеть:
получаем список профилей («Неопознанная, Частная, Публичная или Доменная») и номер, который закреплен за интерфейсом
Get-NetConnectionProfile
Устанавливаем необходимый профиль(в данном случае - Private)
Set-NetConnectionProfile -InterfaceIndex %#% -NetworkCategory Private
Удаляем файлы старше двух месяцев
$date = (Get-Date).AddMonths(-2)
Get-ChildItem -Path D:\Files\Common | where {!$_.PSIsContainer} |
foreach {
if ($_.LastWriteTime -lt $date) {
# в тестовых целях указываем -whatif
# когда убедимся что все корректно работает то убираем его
Remove-Item $_ -whatif
}
}
Количество файлов в папках и размер папок
Cкрипт, выводящий на экран и в файл D:\CountFiles.csv информацию о том, сколько содержит файлов каждая папка и подпапки в директории D:\DIR, а также размер этих папок и подпапок.
$source="D:\DIR"
Get-ChildItem $source -recurse -force | where {$_.psIscontainer} | foreach {
$count = Get-ChildItem $_.fullname -recurse | where {$_.length} | Measure-Object -property length -Sum
Write-Host($_.FullName)
$FilesSize = '{0:F}' -f ((($count.Sum)/1024)/1024)
Write-Host("Files: " + $count.count )
Write-Host("Size: " + $FilesSize + " MB")
'"' + $_.FullName + '","' + $count.count + '","' + $FilesSize + '"' | Out-File D:\CountFiles.csv -Append
}