Newcomposers.ru

IT Мир
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Скрипты powershell для администратора

Разные cкрипты для Powershell

Оценка: 86.21 % — 14 Голосов

Общая

Буду хранить здесь разные говноскриптики для управления и получения информации из AD и прочих продуктов Microsoft.

Скрипты для Exchange

Выполнение данных скриптов происходит в Exchange Management Shell

Скрипт загрузки фотографий в учетные записи.

Фотографии должны быт 640х640 пикселей.

Скрипт берет файлы из папки с обработанными фотографиями.

param([Switch]$all,[Switch]$Hide,[Switch]$CheckOnly, [String]$UserNameSam)
$PhotoPath = «C:UserPhotos»
$ProceedPhotoPath = «C:UserPhotosDone»
$OU = ‘Группа с пользователями в AD’
$UserPhotoCount = 0
$UserCount = 0
Function CheckPhoto($UserSamName_in, $UserPhotoFile_in)
<
$result = $false;
if (Test-Path $UserPhotoFile_in)
<
if( $Hide -eq $false) <
Write-Host «Найден:’$UserPhotoFile’ для $UserName($UserSam_in). » -ForegroundColor Green -NoNewline >
$result = $true
>
else
<
$result = $false
Write-Host «Не найден:$UserPhotoFile» -ForegroundColor Gray
>
return $result
>
Function SetPhoto($UserSamName_in, $UserPhotoFile_in)
<
$check_result = CheckPhoto $UserSamName_in $UserPhotoFile_in;
$result = $false
if($check_result -eq $true)
<
if($CheckOnly -eq $false)
<
$UserPhoto = ([Byte[]] $(Get-Content -Path $UserPhotoFile_in -Encoding Byte -ReadCount 0))
Set-UserPhoto -Identity $UserSamName_in -PictureData $UserPhoto -Confirm:$False
$result=$true
if( $Hide -eq $false) <
Write-Host «Загружен» -ForegroundColor Green >
>
else
<
if( $Hide -eq $false) <
Write-Host «Посчитан» -ForegroundColor Green >
>
>
return $result
>
Write-Host «ExchangePhotoUpload.ps1 [-all] [-check] [UserNameSam] [PhotoFile]»
$users = Get-User -OrganizationalUnit $OU
if ( $all -eq $true)
<
Write-Warning «## Загрузка фотографий для всех пользователей в OU=$OU из $PhotoPath»
foreach ($user in $users)
<
$UserName = $user.Name
$UserPhotoFile = $($PhotoPath+$UserName+».jpg»)
$UserCount++
if(SetPhoto $user.SamAccountName $UserPhotoFile)
<
$UserPhotoCount++
>
>
>
else
<
foreach ($user in $users)
<
if($UserNameSam -eq $user.SamAccountName)
<
$UserCount++
$UserName = $user.Name
Write-Warning «## Загрузка фотографии для $UserName в OU=$OU из $PhotoPath»
$UserPhotoFile = $($PhotoPath+$UserName+».jpg»)
#Write-Error «($UserPhotoFile)»
if(SetPhoto $user.SamAccountName $UserPhotoFile)
<
$UserPhotoCount++
>
>
>
if($CheckOnly -eq $true) <
Write-Host «Найдено:» -NoNewline >
else <
Write-Host «Загружено:» -NoNewline >
Write-Host » $UserPhotoCount фотографий для $UserCount пользователей»
>

Очистка логов Exchange

Что бы Exchange не толстел своими всевозможными логами.

Пути установки могут отличаться — проверь пути.

Set-Executionpolicy RemoteSigned
$days=0
$IISLogPath=»C:inetpublogsLogFiles»
$ExchangeLoggingPath=»C:Program FilesMicrosoftExchange ServerV15Logging»
$ETLLoggingPath=»C:Program FilesMicrosoftExchange ServerV15BinSearchCeresDiagnosticsETLTraces»
$ETLLoggingPath2=»C:Program FilesMicrosoftExchange ServerV15BinSearchCeresDiagnosticsLogs»
Function CleanLogfiles($TargetFolder)
<
if (Test-Path $TargetFolder) <
$Now = Get-Date
$LastWrite = $Now.AddDays(-$days)
$Files = Get-ChildItem $TargetFolder -Include *.log,*.blg, *.etl, *.txt -Recurse | Where <$_.LastWriteTime -le "$LastWrite">
foreach ($File in $Files)

>
Else <
Write-Host «The folder $TargetFolder doesn’t exist! Check the folder path!» -ForegroundColor «white»
>
>
CleanLogfiles($IISLogPath)
CleanLogfiles($ExchangeLoggingPath)
CleanLogfiles($ETLLoggingPath)
CleanLogfiles($ETLLoggingPath2)
gci -Path ‘C:Program FilesMicrosoftExchange ServerV15Logging’,’C:Program FilesMicrosoftExchange ServerV15TransportRolesLogs’,’D:iislog’ -Include ‘*.log’,’*.blg’,’*.bak’ -Recurse -Force | ? LastWriteTime -lt (Get-Date).AddDays(-14) | Remove-Item -Recurse -Force

Для работы с Active Directory
Выгрузить список Пользователей с ПК

У каждого ПК в AD указан пользователь управляющий им. ПК пользователей выбираются по маске с определённой группы в 75 строке скрипта.

Данный скрип позволяет создать список пользователей с выгрузкой ФИО, должности, отдела, телефона, привязанных к ним ПК и прочего в CSV. И используется для автоматической постановки пользовательских ПК в систему мониторинга Icinga2.

function Write-Log
<
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true)]
[ValidateNotNullOrEmpty()]
[Alias(«LogContent»)]
[string]$Message,

[Parameter(Mandatory=$false)]
[Alias(‘LogPath’)]
[string]$Path=’C:TempPowerShellLog.log’,

[Parameter(Mandatory=$false)]
[ValidateSet(«Error»,»Warn»,»Info»)]
[string]$Level=»Info»,

[Parameter(Mandatory=$false)]
[switch]$NoClobber
)
Begin
<
# Set VerbosePreference to Continue so that verbose messages are displayed.
$VerbosePreference = ‘Continue’
>
Process
<
# If the file already exists and NoClobber was specified, do not write to the log.
if ((Test-Path $Path) -AND $NoClobber) <
Write-Error «Log file $Path already exists, and you specified NoClobber. Either delete the file or specify a different name.»
Return
>
# If attempting to write to a log file in a folder/path that doesn’t exist create the file including the path.
elseif (!(Test-Path $Path)) <
Write-Verbose «Creating $Path.»
$NewLogFile = New-Item $Path -Force -ItemType File
>
else <
# Nothing to see here yet.
>
# Format Date for our Log File
$FormattedDate = Get-Date -Format «yyyy-MM-dd HH:mm:ss»
# Write message to error, warning, or verbose pipeline and specify $LevelText
switch ($Level) <
‘Error’ <
Write-Error $Message
$LevelText = ‘ERROR:’
>
‘Warn’ <
Write-Warning $Message
$LevelText = ‘WARNING:’
>
‘Info’ <
Write-Verbose $Message
$LevelText = ‘INFO:’
>
>
# Write log entry to $Path
«$FormattedDate $LevelText $Message» | Out-File -FilePath $Path -Append
>
End
<
>
>
$global:Path = ‘C:TempMyLogFile.log’
$ComputerList = get-adcomputer -Filter <(Name -like "WS-*")>-SearchBase «OU=Рабочие станции,OU=Персональные компьютеры,DC=123,DC=ru» -properties Name,DNSHostName,Managedby | select Name,DNSHostName,@>,@

Для исполнения следующих скриптов мы обратимся к PowerShell. Любой системный администратор (по профессии или в душе) знает его возможности и периодически пользуется, для всех остальных это просто интерфейс командной строки или иностранное слово. На популярных ресурсах вы можете найти уйму идей, как использовать PowerShell для развлечения и дела, здесь же мы рассмотрим лишь простые скрипты, которые помогут войти в курс дела.

Выключение и перезапуск

Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:

Сохраняем файл, как *.cmd (*- имя вашего файла, например shutdown.cmd) и не забудьте в типе выбрать “все файлы”. Всё, исполняемый файл по запуску выключит ваш компьютер. “-s”, в данном случае означает выключение, замените на “-r” — получите перезагрузку. “-t” — таймер, у нас он установлен на 0 секунд, но если установить на 60 — получите выключение через 60 секунд.

Удаляем ненужное

В различных сборках, предустановленных на компьютер или ноутбук, вы можете наткнуться на массу абсолютно ненужных пакетов приложений. Удалить их с помощью скрипта проще простого:

get-appxpackage -name *APPNAME* | remove-appxpackage

Как вы понимаете, *APPNAME* — название неинтересующей надстройки. Да, удалять эти пакеты можно стандартным путём или через специальные программы, но вы можете создать скрипт, который удалит их все одним двойным кликом.

Управляем процессами

Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:

или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):

Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:

Stop-Service -Name *ANTIVIRUS*

Stop-Service -Name *BROWSER*

Названия для замены указаны в * *.

Переименовываем группу файлов

Ещё одна назойливая проблема: вы скопировали с фотоаппарата или телефона изображения. Огромная куча фотографий, которые называются однотипно вроде HGNMD034, где HGNMD — название общей директории, объединяющей файлы, например, отснятые за один день. Для того, чтобы сделать название этих файлов приятнее или иметь возможность объединить несколько папок, не получив при этом хронологическую путаницу из-за имен, можно использовать скрипт группового переименования:

$path = «$compdesktopjourneyrussia»
$filter = ‘*.jpg’
get-childitem -path $path -filter $filter |
rename-item -newname

Читать еще:  Административный договор как источник административного права

В первой строке в кавычках укажите точный путь к файлам. Во второй строке — расширение файлов, подлежащих изменению. В последней строке вместо “HGNMD” — общее в названиях файлов, подлежащее замене, на что-то, вместо “RUSSIA” — имя, которое вы хотите присвоить. Если данный скрипт опять сохранить в качестве исполняемого файла, то подобные однотипные операции будут отнимать у вас всего несколько секунд времени.

Ищем файлы

Ещё одна простая задача, реализуемая на PowerShell — поиск файлов в директории. В данном случае рассмотрим поиск log-файлов:

Или чуть более сложный пример, когда поиск будет производиться ещё и в подпапках:

Get-ChildItem C:Windows* -Include *.log -Recurse -Force

Это чуть более правильная и полная запись, где “Include” — указывает на искомую часть, “Recurse” — на поиск во вложенных каталогах, “Force” — поиск включает в себя системные и скрытые файлы.

Справка

Итак, с общими принципами функционирования PowerShell мы более-менее разобрались. Если что-то непонятно — обратитесь к справочной информации следующим образом:

Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:

Get-Help -Name *CMDLET*

Где вместо *CMDLET* вставьте любую интересующую команду.

Находим данные

Теперь перейдём к простым скриптам, описанным чуть более сложными командами. Например, с помощью PowerShell вы можете выудить почти всю информацию о железе и комплектующих. Как вариант, вот скрипт для оценки уровня заряда аккумулятора:

Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.PowerStatus].GetConstructor(‘NonPublic, Instance’, $null, [Type[]]@(), $null ).Invoke($null)

Архитектура процессора удалённого компьютера:

[PSObject].Assembly.GetType( ‘System.Management.Automation.PsUtils’
).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40
).Invoke($null, @())

Иногда важной задачей бывает проверка прав администратора у текущего пользователя. Вот простой способ на PowerShell:

[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())

На этом пока остановимся. Как вы наверное убедились, PowerShell не самый сложный, но очень полезный инструмент, который способен выполнять, как простейшие операции, так и достаточно сложные. Однако PowerShell не единственный инструмент для создания скриптов для Windows. Но об этом в следующий раз.

Если вы только недавно встали на путь программирования и ещё даже не пробовали поиграться с установленной операционной системой, то манипулирование с помощью скриптов может вызвать резонные вопросы необходимости и удобства. Однако, даже если опустить тот простой факт, что они помогают лучше понять, как функционирует ОС, в будущем при создании приложений, исполнение сценариев может оказаться крайне полезным навыком.

Для исполнения следующих скриптов мы обратимся к PowerShell. Любой системный администратор (по профессии или в душе) знает его возможности и периодически пользуется, для всех остальных это просто интерфейс командной строки или иностранное слово. На популярных ресурсах вы можете найти уйму идей, как использовать PowerShell для развлечения и дела, здесь же мы рассмотрим лишь простые скрипты, которые помогут войти в курс дела.

Выключение и перезапуск

Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:

Сохраняем файл, как *.cmd (*- имя вашего файла, например shutdown.cmd) и не забудьте в типе выбрать “все файлы”. Всё, исполняемый файл по запуску выключит ваш компьютер. “-s”, в данном случае означает выключение, замените на “-r” — получите перезагрузку. “-t” — таймер, у нас он установлен на 0 секунд, но если установить на 60 — получите выключение через 60 секунд.

Удаляем ненужное

В различных сборках, предустановленных на компьютер или ноутбук, вы можете наткнуться на массу абсолютно ненужных пакетов приложений. Удалить их с помощью скрипта проще простого:

get-appxpackage -name *APPNAME* | remove-appxpackage

Как вы понимаете, *APPNAME* — название неинтересующей надстройки. Да, удалять эти пакеты можно стандартным путём или через специальные программы, но вы можете создать скрипт, который удалит их все одним двойным кликом.

Управляем процессами

Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:

или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):

Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:

Stop-Service -Name *ANTIVIRUS*

Stop-Service -Name *BROWSER*

Названия для замены указаны в * *.

Переименовываем группу файлов

Ещё одна назойливая проблема: вы скопировали с фотоаппарата или телефона изображения. Огромная куча фотографий, которые называются однотипно вроде HGNMD034, где HGNMD — название общей директории, объединяющей файлы, например, отснятые за один день. Для того, чтобы сделать название этих файлов приятнее или иметь возможность объединить несколько папок, не получив при этом хронологическую путаницу из-за имен, можно использовать скрипт группового переименования:

$path = «$compdesktopjourneyrussia»
$filter = ‘*.jpg’
get-childitem -path $path -filter $filter |
rename-item -newname

В первой строке в кавычках укажите точный путь к файлам. Во второй строке — расширение файлов, подлежащих изменению. В последней строке вместо “HGNMD” — общее в названиях файлов, подлежащее замене, на что-то, вместо “RUSSIA” — имя, которое вы хотите присвоить. Если данный скрипт опять сохранить в качестве исполняемого файла, то подобные однотипные операции будут отнимать у вас всего несколько секунд времени.

Ищем файлы

Ещё одна простая задача, реализуемая на PowerShell — поиск файлов в директории. В данном случае рассмотрим поиск log-файлов:

Или чуть более сложный пример, когда поиск будет производиться ещё и в подпапках:

Get-ChildItem C:Windows* -Include *.log -Recurse -Force

Это чуть более правильная и полная запись, где “Include” — указывает на искомую часть, “Recurse” — на поиск во вложенных каталогах, “Force” — поиск включает в себя системные и скрытые файлы.

Справка

Итак, с общими принципами функционирования PowerShell мы более-менее разобрались. Если что-то непонятно — обратитесь к справочной информации следующим образом:

Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:

Get-Help -Name *CMDLET*

Где вместо *CMDLET* вставьте любую интересующую команду.

Находим данные

Теперь перейдём к простым скриптам, описанным чуть более сложными командами. Например, с помощью PowerShell вы можете выудить почти всю информацию о железе и комплектующих. Как вариант, вот скрипт для оценки уровня заряда аккумулятора:

Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.PowerStatus].GetConstructor(‘NonPublic, Instance’, $null, [Type[]]@(), $null ).Invoke($null)

Архитектура процессора удалённого компьютера:

[PSObject].Assembly.GetType( ‘System.Management.Automation.PsUtils’
).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40
).Invoke($null, @())

Иногда важной задачей бывает проверка прав администратора у текущего пользователя. Вот простой способ на PowerShell:

[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())

На этом пока остановимся. Как вы наверное убедились, PowerShell не самый сложный, но очень полезный инструмент, который способен выполнять, как простейшие операции, так и достаточно сложные. Однако PowerShell не единственный инструмент для создания скриптов для Windows. Но об этом в следующий раз.

PowerShell Скрипты — примеры автоматизации

В этой записи буду складировать свои (и не только свои) небольшие PowerShell скрипты, которые не настолько велики, чтоб им посвящать отдельную запись.

Скрипты будут достаточно полезны в качестве примеров для создания скриптов со схожим функционалом.

Windows Powershell — оснастка командной строки и скриптовый язык для различной автоматизации задач и администрирования в windows. Официальный сайт — microsoft.com/powershell

Удаление всех бекапов кроме трех последних

На сервере локально сохраняются бекапы, где папки именуются таким образом: «klbackup2014-01-22#23-00-00». PowerShell скрипт переносит эти папки на сетевой диск и хранить не более 3-х последних бекапов.

Удаляем файлы старше трех месяцев

Разрешение скачанного изображения

PowerShell скрипт скачивает изображение из Интернета и отображает ее разрешение

Среднее арифметическое трех последних чисел

Из файла, в котором содержаться в каждой строке по числу, нужно получить три последние числа и выдать их среднее арифметическое.

Количество файлов в папках и размер папок

PowerShell скрипт выводит на экран и в файл D:CountFiles.csv информацию о том, сколько содержит файлов каждая папка и подпапки в директории D:Photos, а также размер этих папок и подпапок. csv файл можно импортировать в exel или гугл-таблицы и отсортировать столбцы по возрастанию или спаданию. Скрипт может пригодиться при оптимизации файлового хранилища.

Читать еще:  Центр администрирования office 365

Случайный афоризм из файла

Отображение mp3-файлов с низким битрейтом

PowerShell скрипт выводит список mp3-файлов, которые находятся в папке D:vk-music и имеют битрейт мене 320

Удаление изображений с плохим качеством

Удаляем в указанных папках (рекурсивно) изображения jpg с худшим качеством чем HD Ready

Копирование бекапов на резервную площадку

Если PowerShell скрипт запущен в определенное время и определенный день, то он начинает копировать файлы из указанных папок. Ход процесса записывается в лог файл.

После окончания работы:

  • присылается письмо в котором указано:
    • свободное место на локальных дисках (до старта и после окончания), объем бекапа
    • время старта и окончания, длительность бекапа
    • средняя скорость копирования
  • компьютер выключается

Компьютер выключается потому, что он в основном выключен. Для резервного копирования он автоматически включается (настройка в биосе).

Информация об обновлениях WSUS

Этот Powershell скрипт получает информацию со WSUS и показывает:

  • количество обновлений по заданных критериям
  • краткую сводную информацию об обновлениях
  • имена обновлений
  • отображает список обновлений по заданным критериям для каждого компьютера по отдельности

Лочим экран и произносим текст

Задача: если в заббиксе сработал тригер и он не потвержден, то необходимо лочить экран и произность этот тригер.

Тригеры из заббикса запрашиваются утилитой zabbixctl и выводяться в текстовый файл, который опубликован по веб-адресу.

Как автоматизировать рутинные задачи обслуживания в Windows 10

Часто ли вам приходится удалять старые файлы, очищать ненужные данные, запускать постоянно используемые программы и выполнять другие действия вручную? Если ваш ответ звучит утвердительно, то мы предлагаем вам ознакомиться с несколькими способами по автоматизации повторяющихся задач в Windows 10 с целью экономии времени. Хотя слишком много времени от автоматизации вы не выиграете, в любом случае вам не придется периодически выполнять одни и те же действия вручную.

Для начала мы рассмотрим несколько встроенных средств Windows, которые помогают автоматизировать определенные задачи, а затем приведем примеры такой автоматизации.

Используемые инструменты

Скорее всего, вы уже сталкивались с такими инструментами, как Командная строка, PowerShell и Планировщик заданий. Если вы — новичок, то ознакомьтесь с описанием данных встроенных средств Windows.

Командная строка и пакетные файлы .BAT

Командная строка в Windows 10 является преемником командной строки MS-DOS и представляет собой программу-интерпретатор командной строки. Файл, который содержит несколько команд или инструкций называется «пакетным файлом» и обычно имеет расширение .bat. Он может использоваться для автоматизации рутинных задач, например, для резервного копирования файлов и папок на переносной диск. Чтобы найти командную строку введите cmd или Командная строка в меню «Пуск» и выберите предложенный вариант.

Вам нужно лишь собрать необходимые команды в текстовом файле с расширением «.bat» или «.cmd». Вы можете просто открыть файл для его выполнения — Windows 10 выполнит команды в файле последовательно или в соответствии с запрограммированным порядком.

Полный список команд с описанием доступен на сайте Microsoft.

Скрипты PowerShell

PowerShell — мощный фреймворк для управления и автоматизации для продвинутых пользователей и системных администраторов. Если вам нужен обширный потенциал для автоматизации, то вам стоит изучить и использовать PowerShell.

Командная строка гораздо проще в изучении и использовании, чем PowerShell, потому что последний предлагает больше гибкости и функциональных возможностей.

Чтобы получить доступ к Windows PowerShell, введите PowerShell в поисковой строке меню Пуск. Вы увидите две программы — «PowerShell» и «PowerShell ISE». PowerShell представляет собой интерпретатор командной строки, а PowerShell ISE применяется для написания скриптов (с расширением «.ps1»), которые содержат группу команд, также, как и пакетные файлы .bat.

Полный список команд Powershell с описанием доступен на сайте Microsoft.

Планировщик заданий

Другой полезный инструмент Windows, который поможет в автоматизации — Планировщик заданий, программа для запуска различных программ и задач по расписанию. Запланированные задания запускаются в определенное время или через определенные интервалы времени. Пользователь может настроить показ сообщений или уведомлений по завершению задачи и выполнять другие дополнительные действия. Более того, вы можете настроить задачи под ваши нужды.

Чтобы запустить планировщик, введите фразу Планировщик заданий в поисковой строке меню Пуск. Обратите внимание, что некоторые программы Windows и некоторые сторонние приложения (например, Google Chrome) создают запланированные задачи для нужд обслуживания, поэтому не стоит редактировать или отключать уже имеющиеся задачи.

Мы уже публиковали подробный материал по использованию Планировщика заданий.

Приступим к автоматизации

Теперь, когда вы получили базовую информацию о необходимых инструментах, давайте попробуем создать несколько скриптов и заданий. При правильной настройке, приведенные ниже сценарии помогут автоматизировать различные задачи обслуживания на вашем компьютере без необходимости вмешательства в эти действия.

Запуск нескольких приложений

Если вам приходится каждый раз при запуске компьютера открывать одни и те же файлы (например, электронные таблицы), то вы можете автоматизировать эти действия. Для этого нужно определить путь папок, файлов или программ, которые нужно открыть после загрузки операционной системы и создать пакетный файл.

Например, вы можете создать пакетный файл для открытия папки Документы, браузера Google Chrome, документа Word с помощью кода, указанного ниже. Обратите внимание, что переменная «%USERPROFILE%» соответствует вашей пользовательской директории в Windows.

Запуск приложений от имени администратора

В предыдущем примере у вас должно все получиться, но запуск программ в том способе происходит без прав администратора. В результате программа, которая требует повышенных прав для запуска покажет запрос службы контроля учетных записей, который нужно подтвердить вручную. Если вы это не сделаете, программа не запуститься или завершит работу.

С этой проблемой нам поможет справиться Планировщик заданий. Только данный встроенный инструмент позволяет запускать программу с правами администратора без участия пользователя. Вы можете запустить приложение или несколько приложений (с помощью пакетного скрипта), используя Планировщик заданий. Разберем, как это сделать:

  • Откройте Планировщик заданий. Выберите Действие > Создать задачу в верхнем меню или одноименную функцию на панели «Действия» справа.
  • На вкладке «Общие» укажите название, например «Задача администратора», и отметьте галочку «Выполнить с наивысшими правами».

  • На вкладке «Триггеры» нажмите «Создать..» и поле «Начать задачу:» укажите вариант «При запуске».
  • На вкладке «Действия» также нажмите «Создать..».
  • В открывшемся окне выберите действие «Запуск программы», в поле «Программа / Сценарий» укажите ваш исполняемый или пакетный файл и нажмите ОК.

  • Теперь убедитесь, что на вкладке «Параметры» отмечена опция «Выполнять задачу по требованию» и нажмите ОК для добавления задачи.
  • Все готово. Теперь указанная программа будет запускаться автоматически с правами администратора сразу после запуска системы.

Удаление старых файлов

Если вам нравятся технологии или вы являетесь разработчиком, и вам часто приходится скачивать и тестировать различные программы, то спустя некоторое время (достаточно и месяца) в вашей системе накопится большое количество уже ненужных файлов. К нам на помощь снова приходит пакетный файл.

Аналогичным образом вы можете создать .bat файл для удаления старых файлов определенного расширения или файлов в определенных директориях или вложенных папках, возраст которых превышает заданный предел. Приведенный ниже код удаляет документы .docx в папке Документы возрастом более 20 дней (вы можете указать своё число дней, изменив значение, следующее за аргументом /d).

Вы также можете изменить путь, изменив значение, следующие за аргументом /p на свою папку, файлы в которой нужно удалить. Опять же, переменная «%USERPROFILE%» соответствует вашей пользовательской директории в Windows.

Очистка корзины

Рекомендуется удалять содержимое корзины регулярно для освобождения пространства на диске. Это очень простая задача, которая не займет много времени, но даже об этом действии можно забыть, внедрив автоматизацию. Данное задание можно обрабатывать в автоматическом режиме с помощью Планировщика заданий. Приведем шаги по автоматической оптимизации свободного пространства на жестком диске.

  • Откройте Планировщик заданий.
  • Откройте Библиотека планировщика заданий и в меню «Действие» выберите пункт «Создать папку» и назовите ее «Мои задачи».
  • Выберите папку «Мои задач» и в меню «Действие» выберите «Создать задачу».
  • В окне создания задачи на вкладке «Общие» укажите название «Очистка корзины».
  • На вкладке «Триггеры» нажмите кнопку «Создать. » и в поле «Начать задачу:» в открывшемся окне выберите «По расписанию».
  • Выберите опцию «Еженедельно или ежемесячно» в зависимости от ваших предпочтений и нажмите ОК.
Читать еще:  Подсистема управления административными процессами

  • На вкладке «Действия» выберите «Создать. » и в поле «Программа / Сценарий» введите «PowerShell.exe»
  • В том же окне в поле «Добавить аргументы (необязательно)» введите следующий запрос -NoProfile -Command «Clear-RecycleBin -Force» и нажмите ОК.

  • На этом все. Просто сохраните задание, и корзина будет очищаться регулярно автоматически.

Отключение компьютера

Чтобы не засиживаться за монитором допоздна, рекомендуем применить небольшой трюк — настроить автоматическое отключение компьютера в определенное время. Для этого воспользуемся скриптом.

Приведенный ниже скрипт покажет сообщение в 11 вечера и выключить компьютер спустя 120 секунд (2 минуты). Вы можете указать другое время, изменив значение переменной %time%

Примечание: чтобы сохранить прогресс работы у вас будет целых 120 секунд, вместо 30 секунд по умолчанию. Вы можете остановить процесс отключения компьютера, нажав Win + R , введя команду shutdown -a и нажав Enter . Очень просто, не правда ли?

Резервное копирование файлов и папок

Конечно, существует много сторонних решений для резервного копирования файлов, в том числе облачные сервисы Dropbox или Backup and Sync от Google. Однако, если вы хотите иметь полный контроль над своими конфиденциальными файлами и не хотите «светить» их на облачных серверах, тогда можно настроить автоматическое резервное копирование на переносной жесткий диск или флешку. Нам снова поможет пакетный скрипт. Ничего не нужно скачивать, все делается очень просто.

Обратите внимание, что данный метод просто копирует определенные файлы и папки и не создает стандартные точки восстановления системы или копии системы. В нашем примере воспользуемся командой robocopy для резервного копирования файлов. Следующий скрипт позволяет создать полную резервную копию содержимого пользовательской папки и системного реестра.

Некоторые замечания

Скорее всего, вам понравится заниматься автоматизацией задач. Однако для удобства, вместо приложения Блокнот лучше воспользоваться более продвинутым редактором кода, например Notepad++. Так например, вы сможете без лишних трудностей добавлять сообщения на русском языке, используя меню Notepad++ «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM 866».

Вы можете подробно ознакомиться с различными командами для решения широкого круга задач автоматизации по ссылкам выше. Надеемся, что данная статья будет вам полезна и вы сможете повысить уровень продуктивности, не отвлекаясь на рутинные задачи.

Если вы хотите поделиться примерами своих скриптов или настроенных заданий автоматического обслуживания, воспользуйтесь формой комментариев ниже.

Годовая
подписка
на
Хакер

Xakep #251. Укрепляем VeraCrypt

Xakep #250. Погружение в AD

Xakep #248. Checkm8

Xakep #247. Мобильная антислежка

Выбираем среду разработки на PowerShell и пишем скрипты для Windows

Содержание статьи

В администрировании всегда есть место творчеству. Хочешь сделать какую-нибудь автоматизацию рутинной задачи? Пожалуйста! Нужно что-то регулярно проверять на активность? Не вопрос! Хочешь обработать какой-нибудь гигантский отчет и вывести только актуальные данные? Тоже можно. Все эти и многие другие задачи лучше всего решать при помощи скриптов, и язык PowerShell в случае с Windows — оптимальный выбор.

Что такое PowerShell и чем он хорош

Пользователи UNIX и Linux, а с какого-то момента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.

Возвращаясь в Windows (а без этого иногда никак), понимаешь, что скрипты .bat хоть и хороши, но спасают не всегда: очень уж ограниченны их возможности. И если ты до сих пор считал, что PowerShell — это неведомая штуковина, ради которой нужно что-то там поднимать и настраивать, то не спеши с выводами — он, если разобраться, совсем неплох.

Windows PowerShell — это расширяемое средство автоматизации с открытыми исходниками, которое состоит из оболочки (командной строки) и скриптового языка. Впервые он был показан в 2003 году (тогда он назывался Monad). PowerShell 2.0 вышел в составе Windows 7 и Windows Server 2008 R2 и с тех пор присутствует в Windows в качестве стандартного компонента. Его даже включили в Windows XP SP3. PowerShell построен на основе .NET Framework и интегрирован с ним. PowerShell может обращаться к COM, WMI и ADSI, а также, конечно же, исполняет консольные команды.

В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдавать команды.

Если раньше ты не интересовался PowerShell, то, скорее всего, у тебя стоит вторая версия. Я рекомендую обновиться как минимум до третьей — она содержит куда больше возможностей и полезных фишек. Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей. «Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.

Выбираем среду разработки и инструменты

Теперь давай разберемся, где удобнее всего писать код. Можно, конечно, и в «Блокноте», Notepad++ или Sublime. Но это в данном случае не самый грамотный выбор редактора. Лучше всего начинать знакомство с PowerShell, вооружившись идущим в комплекте PowerShell ISE.

PowerShell ISE

Это даже не редактор, а практически полноценная среда разработки. Здесь есть функция IntelliSense, которая позволяет просматривать перечень командлетов и их параметров, переменных, утилит и прочего. Поддерживаются сниппеты, есть возможность расширения набора функций за счет различных аддонов. Очень полезно и окно Commands. В нем можно составлять команды в визуальном режиме: выбираешь модуль, находишь нужный командлет и задаешь ему необходимые параметры. Получившуюся команду можно скопировать в консоль или сразу запустить на выполнение. В общем, этакий конструктор для админа. Ну и конечно, есть подсветка синтаксиса, дебаггер и многое другое.

Тем не менее у PowerShell ISE есть и достойные конкуренты. Один из них — Dell PowerGUI.

PowerGUI — это визуальное дополнение к PowerShell. Оно упрощает сборку собственных сценариев до выбора необходимых командлетов. Берешь то, что нужно для решения задачи, и перетаскиваешь части кода, пока не получишь скрипт. Одна из главных фишек PowerGUI — это Power Packs, готовые скрипты, опубликованные сообществом пользователей и выложенные в свободный доступ. Тут есть и простенькие команды вроде добавления пользователей, и сложные — к примеру, управление свитчами и виртуальными машинами. Все их легко дополнять и модифицировать в соответствии с нуждами.

powergui

PowerShell Studio 2015 фирмы Sapien — более продвинутая среда, которая рассчитана на совместную разработку одного проекта большим количеством участников. Если ты когда-нибудь имел дело с Visual Studio, то, думаю, заметишь сходство. Среди полезных фишек PowerShell Studio — панель Ribbon, поддержка удаленной отладки, а также функции компилятора, которые позволяют включить скрипты в исполняемые файлы. Есть поддержка разных версий PowerShell.

PowerShell Studio 2015

Стоит упомянуть и Script Browser для Windows PowerShell ISE. Это не среда разработки, но весьма интересный инструмент, разработанный в Microsoft. Script Browser открывает доступ к базе готовых скриптов, которые можно использовать в качестве образцов для написания своего кода. А еще эта штука умеет анализировать код, который ты пишешь, и подсказывает, как его улучшить.

Script Browser для Windows PowerShel

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Ссылка на основную публикацию
Adblock
detector