1 2 3 4 5 6 7 8 9 10 11 12 | Get-ChildItem -Path 'C:\Documents and Settings' -Force ` | foreach { $profilePath = $_.Fullname $path = $profilePath + "\\Local Settings\\Temp\\" Get-ChildItem -Path $path -Force | foreach {$_.FullName Remove-Item $_.FullName -Recurse -Force } $path = $profilePath + "\\Local Settings\\Temporary Internet Files\\" Get-ChildItem -Path $path -Force | foreach {$_.FullName Remove-Item $_.FullName -Recurse -Force } } |
Клочки бумаги, на которых обычно ведутся записи, имеют обыкновение теряться, если их вовремя не подшить. Мысли на тему линукса, а может и не только его, - чтоб не забыть.
Показаны сообщения с ярлыком power shell. Показать все сообщения
Показаны сообщения с ярлыком power shell. Показать все сообщения
2016-10-25
Очистка временных папок во всех профилях терминального сервера
Не обязательно терминального и вообще сервера, но скрипт набросал именно для этой задачи. Не самый оптимальный вариант, но решение вышло вполне себе рабочим и надежным.
2016-08-03
Поиск живых компьютеров в Active Directory
1 2 3 4 5 6 7 8 9 | Import-Module ActiveDirectory $lastCheckDays = 3 $filter = (get-date).AddDays(-$lastCheckDays).ToString("dd/MM/yyyy") get-adcomputer ` -filter "Passwordlastset -gt '$filter'" ` -properties * ` | Select name,passwordlastset,OperatingSystem |
Выполнять лучше на контроллере соответствующего домена
Если требуется собрать и свести в один файл информацию о комьютерах из разных доменов, можно использовать такой скрипт
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | Import-Module ActiveDirectory $tempfile = 'c:\temp\comp.csv.temp' $resultfile = 'c:\temp\comp.csv' function DoDomain($dc) { $lastCheckDays = 30 # Максимум дней с обновления пароля $filter = (get-date).AddDays(-$lastCheckDays).ToString("dd/MM/yyyy") $error.clear() try {Get-ADDomain -server "$dc" | Out-Null } # проверка доступности контроллера catch {"[Error] $dc" } if (!$error){ # если контроллер доступен - понеслась... # Вытаскиваем список живых компов, # экспортируем во временный файл, вырезая заголовки get-adcomputer ` -filter "Passwordlastset -gt '$filter'" ` -server "$dc"` -properties name,CanonicalName,passwordlastset,OperatingSystem ` | Select name,CanonicalName,passwordlastset,OperatingSystem ` | ConvertTo-Csv -NoTypeInformation ` | Select-Object -Skip 1 ` | Out-File "$tempfile" #импортируем временный файл с другими заголовками, $tmp = Import-Csv -Header Name,Domain,Date,OS $tempfile # из поля с указанием домена и OU компьютера вырезаем все кроме домена # для удобства фильтрации по домену например в экселе $tmp | ForEach-Object {$_.Domain = [regex]::replace($_.Domain,'/.*','') } # выбираем добавлять ли заголовок во временный файл. # Добавляем, если результирующий файл еще не был создан и, следовательно # это первый обработанный домен. Записываем временный файл if (Test-Path "$resultfile") { $tmp | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Out-File "$tempfile" } else { $tmp | ConvertTo-Csv -NoTypeInformation | Out-File "$tempfile" } # Добавляем временный файл в конец результирующего [System.IO.File]::ReadAllText("$tempfile") | Out-File "$resultfile" -Append # пробегаемся по результирующему файлу, удаляя пустые строки # (опять же важно для экселя, чтобы первую строку сделать фильром) [System.IO.File]::ReadAllText("$resultfile") -replace '\s+\r\n+', "`r`n" | Out-File "$resultfile" Remove-Item "$tempfile" } } Remove-Item "$resultfile" DoDomain("dc.domain1.local") DoDomain("dc.domain2.local") DoDomain("dc.domain3.local") |
Важно! На контроллерах доменов должна работать служба Active Directory Web Services.
Для контроллеров на Windows 2003, если данная служба не установлена, потребуется установить NET Framework 3.5 SP1, а также патч на фреймворк KB969166 (у микрософта доступен только через общение с саппортом так что выкладываю архив), ну и саму службу
2016-04-07
Как убить лишние копии процесса в windows
Потребовалось сотворить костыль, убивающий незавершающиеся копии процесса, на всякий случай оставив последние из запущенных. В моем случае это костыль, но в целом кому-то может и пригодиться, так что выкладываю рецепт на powershell:
Сгенерировано: hilite.me
$processName = "php-cgi" $survivorsCount = 6 $processList = Get-Process -Name $processName $doomedCount = $processList.Count if ($doomedCount -gt $survivorsCount) { $bulletCount = $doomedCount - $survivorsCount $bulletCount $killkillkill = $processList | Select-Object -first $bulletCount | Stop-Process -force }
2015-11-26
Конвертирование объектов PowerShell 2 в JSON
В инете распространены скрипты для PowerShell 2, использующие фреймворк. Однако этот способ у меня не заработал - выдавал ошибки типа "Invalid JSON primitive: Microsoft.Exchange.Management.SystemConfigurationTasks.DatabaseCopyStatusEntry."
Для таких страдальцев как я, нашелся отличный работающий скрипт конвертации: https://gist.github.com/mdnmdn/6936714
Скачать архивом (актуальность на момент поста): ConvertTo-JSON.zip
Для таких страдальцев как я, нашелся отличный работающий скрипт конвертации: https://gist.github.com/mdnmdn/6936714
Скачать архивом (актуальность на момент поста): ConvertTo-JSON.zip
2015-07-17
Как убить процесс по имени в винде
С помощью powershell - легко и просто:
Get-Process -Name имя_процесса | Stop-Process -force
имя_процесса - может содержать маску,
-force - предотвращает появление диалога с подтверждением
Get-Process -Name имя_процесса | Stop-Process -force
имя_процесса - может содержать маску,
-force - предотвращает появление диалога с подтверждением
2013-02-11
SharePoint 2010: как удалить пул приложений
Для удаления пула приложений в SharePoint 2010 необходимо:
- Зайти на сервер администрирования Sharepoint и запустить SharePoint 2010 Management Shell с правами администратора
(Start -> All Programs -> Microsoft SharePoint 2010 Products -> Правый клик на SharePoint 2010 Management Shell -> Run as administrator) - Выполнить:
- Get-SPServiceApplicationPool
(выведет список созданных пулов) - Remove-SPServiceApplicationPool
- Enter the Identity - > Имя пула
- Нажмите Y для подтверждения удаления пула
Подписаться на:
Сообщения (Atom)