Microsoft сделает новый Outlook обязательным для установки в Windows 10
В настоящее время Microsoft испытывает трудности с привлечением пользователей к новым продуктам и услугам.
Что если бы ваш компьютер мог выполнять за вас скучные задачи? С Windows PowerShell это возможно. Вот как использовать PowerShell для автоматизации повторяющихся ежедневных задач, которые никто не хочет выполнять снова и снова.
Оглавление
Microsoft PowerShell — это утилита командной строки и язык сценариев, представляющий собой мощный инструмент для администраторов, позволяющий автоматизировать широкий спектр задач для компьютеров и сетей. PowerShell содержит компоненты командной строки и построен на платформе .NET. Если вы читаете о WebTech360, то вам нужно знать, что PowerShell — это инструмент, который выбирают ИТ-администраторы для управления крупными сетями.
Изучение того, как использовать PowerShell, упростит выполнение многих утомительных повседневных задач. Вы также можете вносить общесистемные изменения по сети, не настраивая каждый сервер по отдельности. PowerShell становится неотъемлемой частью работы гибридных облачных сред .
PowerShell имеет множество различных применений, помогающих вам работать более эффективно и поддерживать бесперебойную работу сети. К наиболее простым вариантам использования относятся: планирование ежедневных обновлений систем, создание отчетов по текущим процессам, периодические услуги и многое другое. Действительно, многие из этих задач можно выполнить с помощью графического интерфейса, но смысл PowerShell в том, чтобы делать это быстрее.
Если у вас есть регулярная задача по обслуживанию, настройка которой занимает несколько минут, вы можете реализовать ту же функциональность в виде одной именованной команды PowerShell. Так что в следующий раз вы просто откроете этот скрипт, и он будет работать в фоновом режиме. Освоение логики сценариев PowerShell, понимание того, как работают объекты, var (переменные) и разумная реализация их в вашей сети заставят вас задаться вопросом, почему вы не использовали PowerShell раньше.
В этом руководстве рассматриваются основы PowerShell, которые будут полезны новичкам в сфере ИТ, особенно если вы знакомы с командной строкой Windows. В статье будет рассказано, как использовать основные инструменты и команды, как работать с файлами и папками, понимать объекты, использовать переменные и управлять удаленными серверами.
После выпуска Windows NT CMD.EXE стала утилитой командной строки для Windows. Хотя CMD.EXE унаследовал некоторые компоненты от своего предшественника DOS (COMMAN.COM), он все еще основывался на довольно «примитивном» языке сценариев: с использованием файлов команд Windows (.CMD и .BAT). Добавление Windows Scripting Host и языков VBScript и JScript значительно расширило возможности скриптования утилиты.
Эти технологии представляют собой сбалансированное сочетание современных утилит командной строки и сред сценариев. На самом деле вопрос о том, сколько файлов CMD.EXE, .CMD и Windows Scripting Host можно манипулировать, не является реальным вопросом. Больше всего люди жалуются и беспокоятся о выполнении, казалось бы, простых задач.
Используя «структуру» командной строки и инструментов создания сценариев, любой относительно сложный сценарий требует комбинации пакетных команд, Windows Scripting Host и автономных исполняемых файлов. Каждый скрипт использует различные соглашения для выполнения, запроса, анализа и возврата данных.
Слабая поддержка переменных в CMD.EXE, непоследовательные интерфейсы и ограниченный доступ к настройкам Windows в сочетании с еще одним недостатком затрудняют реализацию и использование сценариев командной строки. Вам, возможно, интересно, в чем здесь «еще одна слабость»? Обратите внимание, что это обычный текст. В этих технологиях все представлено в текстовой форме. Вывод команды или скрипта представляет собой текст, который необходимо проанализировать и переформатировать, чтобы использовать его в качестве входных данных для следующей команды. Это базовая отправная точка, которую PowerShell берет от всех традиционных оболочек.
Три концепции, представленные в этом разделе, — это лишь самые основы для понимания ключевых концепций, лежащих в основе PowerShell. Вам придется потратить больше времени на изучение и освоение более сложных концепций при работе с командами PowerShell.
PowerShell установлен по умолчанию в Windows 10, Windows 7, Windows Server 2008 R2 и более новых версиях Windows. Новые версии PowerShell добавляют новые функции и «командлеты» (термин Microsoft для команд PowerShell, произносится как «командлеты») и устанавливаются вместе с соответствующей версией Windows Management Framework (WMF).
В настоящее время последней рекомендуемой версией является WMF 5.1. В некоторых случаях некоторые новые функции зависят не только от версии WMF, но и от операционной системы. Например, Windows 8 и Windows Server 2012 поддерживают командлет Test-NetConnection, который позволяет проверить подключение к определенному порту TCP/IP , но этот командлет недоступен в Windows 7 даже при использовании последней версии WMF.
В большинстве систем Windows пользователям доступны две среды PowerShell: консоль PowerShell и PowerShell ISE (интегрированная среда сценариев). Консоль PowerShell выглядит как традиционная командная строка, но обладает всеми функциональными возможностями PowerShell. Имена переменных, циклы, автодополнение команд и конвейеризация доступны из консоли PowerShell.
Для более сложных задач (например, создания скриптов) PowerShell ISE предоставляет функции автодополнения команд, подсветки кода и автодополнения кода Intellisense от Microsoft, которые помогут вам создавать и тестировать код PowerShell. PowerShell ISE также позволяет работать с несколькими скриптами PowerShell одновременно, используя навигацию с помощью вкладок.
Основой команд PowerShell является командлет. При создании командлетов в PowerShell компания Microsoft реализовала несколько стратегий проектирования.
Первая — это возможность легко выводить имена командлетов или, по крайней мере, делать их более обнаруживаемыми. Команды или командлеты PowerShell также разработаны для удобства использования и имеют стандартизированный синтаксис, что упрощает создание скриптов из интерфейса командной строки.
Командлеты используют формат «глагол-существительное», как в Get-Service, Stop-Service или Import-Csv. Глагольная часть имени командлета указывает действие, выполняемое над существительным. Обычно командлеты, используемые для извлечения информации, содержат в своем имени глагол Get , например Get-Process или Get-Content . Команда, используемая для редактирования чего-либо, обычно начинается с глагола Set , а команда для добавления нового объекта куда-либо обычно начинается с Add или New .
Во-вторых, часто используемым параметрам в PowerShell также даны стандартизированные имена. Например, параметр -ComputerName позволяет выполнить командлет на одном или нескольких удаленных компьютерах. -Credential используется для предоставления объекта аутентификации, содержащего учетные данные пользователя, для запуска команды от имени определенного пользователя.
Вы можете использовать псевдонимы как для командлетов, так и для параметров, чтобы сэкономить нажатие клавиш и сократить общую длину команды (очень полезно, когда вы объединяете несколько команд в цепочку). Хотя эти псевдонимы не всегда используют стандартные соглашения об именовании, они по-прежнему отражают традиционные утилиты командной строки.
В PowerShell такие псевдонимы, как DIR, CD, DEL и CLS, соответствуют командлетам Get-ChildItem, Set-Location, Remove-Item и Clear-Host соответственно. Псевдонимы параметров могут работать двумя способами: они могут использовать предопределенный псевдоним, предоставленный командлетом, или их можно создать путем ввода достаточного количества символов для создания уникального соответствия между поддерживаемыми параметрами командлета.
Большинству системных администраторов в ходе своей работы приходится манипулировать файлами и папками, будь то перемещение папки в другое место на сервере, архивация файлов журналов или поиск больших файлов. В случае, если одни и те же операции повторяются над многими файлами, использование PowerShell для их автоматизации станет эффективным решением, экономящим время.
Для поиска файлов и каталогов одним из первых инструментов командной строки, который администратор изучал в старые времена вычислительной техники, была команда dir. Dir выведет список файлов и каталогов, содержащихся в указанном каталоге.
В PowerShell есть похожая команда в виде командлета Get-ChildItem . Get-ChildItem позволяет быстро создать список файлов в каталоге таким образом, чтобы можно было манипулировать файлами с помощью конвейерной команды или назначать вывод переменной.
Get-ChildItem можно использовать, просто указав путь либо через конвейер, используя параметр -Path , либо сразу после имени командлета. Чтобы скорректировать ответ, возвращаемый Get-ChildItem, необходимо учитывать некоторые параметры, предоставляемые командлетом.
Параметр -Filter — это один из способов поиска файлов. По умолчанию Get-ChildItem возвращает только прямые дочерние элементы целевого каталога. Эту функциональность можно расширить с помощью дополнительной опции -Recurse , которая рекурсивно ищет каталоги, содержащиеся в текущем каталоге.
В PowerShell 4.0 Get-ChildItem добавлена возможность ограничивать результаты файлами или каталогами с помощью переключателя –File или –Directory . Предыдущим версиям PowerShell приходилось передавать результат в Where-Object, фильтруя его по свойству PSIsContainer, чтобы принять такое решение. Ниже показан пример использования обоих методов для возврата папок, содержащихся в C:Users:
Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}
Для обнаружения скрытых или системных файлов необходимо использовать -Force . Get-ChildItem в PowerShell 4.0 и более поздних версиях также можно использовать для возврата только скрытых, доступных только для чтения или системных файлов с помощью -Hidden, -ReadOnly и –System соответственно. Подобную функциональность можно было получить в предыдущих версиях, отфильтровав свойство Mode с помощью Where-Object:
Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}
Проверить, существует ли файл
Обычно при работе с файлами нам нужно знать только, существует ли файл и действителен ли путь к каталогу. PowerShell предоставляет для этого командлет Test-Path, который возвращает значение true или false.
Test-Path используется в качестве меры предосторожности перед попыткой скопировать или удалить определенный файл.
Копировать, перемещать и удалять файлы
Copy-Item: копирует один или несколько файлов или каталогов из местоположения, указанного параметром -Path, в местоположение, указанное параметром -Destination.
Переместить элемент: переместить файл или папку.
При копировании или перемещении структур каталогов следует использовать параметр -Recurse , чтобы командлет выполнил действие с каталогом и его содержимым. В некоторых случаях необходимо использовать параметр -Force , например, когда файл, доступный только для чтения, перезаписывается операцией копирования.
Remove-Item: Удалить файл, папку.
Переключатель -Force следует использовать при обнаружении файла, доступного только для чтения, а -Recurse следует использовать при удалении каталога и его содержимого.
Использование PowerShell -WhatIf и -Confirm
Прежде чем приступать к серьезному массовому удалению, используйте -WhatIf . -WhatIf позволяет увидеть, что произойдет, если запустить скрипт или команду, будет ли это иметь какие-либо потенциальные негативные последствия в виде удаления важных бизнес-данных. Стоит также отметить, что -WhatIf не ограничивается файловыми операциями, он широко используется в PowerShell.
Для скриптов, которые вы собираетесь запускать вручную или, что еще хуже, имеющих зависимые команды, которые запускаются вручную, рассмотрите возможность использования -Confirm . Это позволяет вам запрашивать взаимодействие с пользователем до того, как действие будет фактически выполнено.
Скрипты PowerShell = пакетные файлы на стероидах
Сам PowerShell написан на языке .NET и во многом основан на .NET Framework. Вот почему PowerShell был разработан как объектно-ориентированная утилита и язык сценариев. Все в PowerShell рассматривается как полнофункциональный объект .NET Framework. Команда, которая предоставляет набор объектов, которые можно использовать с использованием свойств и методов данного типа объекта. Когда вы хотите передать вывод одной команды в другую, PowerShell фактически передает объект, а не только текстовый вывод первой командной строки. Это дает следующей команде полный доступ ко всем свойствам и методам объекта в конвейере.
Рассмотрение всего как объекта и возможность принимать объекты между командами — это большое теоретическое изменение для утилит командной строки. При этом PowerShell по-прежнему функционирует как традиционная утилита оболочки. Команды, скрипты и исполняемые файлы можно вводить и запускать из командной строки, а результаты отображаются в текстовом формате. Файлы Windows .CMD и .BAT, VBScripts, JScripts и исполняемые файлы, которые запускаются внутри CMD.EXE, по-прежнему работают в PowerShell. Однако, поскольку они не являются объектно-ориентированными, они не имеют полного доступа к объектам, созданным и используемым в PowerShell. Эти устаревшие скрипты и исполнения по-прежнему будут обрабатывать все как текст, но вы можете комбинировать PowerShell с рядом других технологий. Это очень важный момент, если вы хотите начать использовать PowerShell с набором существующих скриптов, которые невозможно преобразовать все сразу.
Командлеты могут принимать параметры для изменения своего поведения. При запуске командлета или функции вы можете указать значения параметров, чтобы указать, что, когда, где и как должна выполняться каждая команда PowerShell.
Например, Get-Process извлечет и выведет список всех запущенных процессов в вашей операционной системе:
Но что, если вы просто хотите добиться определенного прогресса? Это можно сделать с помощью параметров. Например, чтобы получить все процессы Slack, можно использовать параметр Name с командлетом Get-Process:
Get-Process -Name Slack
Тогда вы увидите только процессы с именем «slack»:
Совет : Некоторые параметры являются «позиционными», то есть их имена необязательны. В этом случае Get-Process -Name Slack и Get-Process Slack выполняют одну и ту же задачу.
Каждый командлет будет принимать различные типы параметров. Используйте команду Get-Help, чтобы просмотреть принятые параметры командлета в разделе СИНТАКСИС.
Get-Help Get-Process
Вы увидите список всех возможных способов запуска данного командлета:
В этом случае командлет Get-Process принимает такие параметры, как Name, Id, ComputerName, Module, FileVersionInfo и другие общие параметры. Символы здесь означают:
Символ |
Имя |
Значение |
---|---|---|
Барабан |
Параметр не принимает ввод |
|
- |
Дефис |
Укажите имя параметра |
<> |
фигурные скобки |
Заполнитель для текста |
[] |
Скобки |
Параметр может принимать одно или несколько значений. |
{} |
фигурные скобки |
Параметр принимает набор значений. |
Параметры принимают набор значений, которые будут указывать тип требуемых данных, например строка, целое число, логическое значение или DateTime. Например, следующая команда:
Get-Process [[-Name] ]
... означает, что параметр Name принимает одно или несколько строковых значений, тогда как эта команда:
Get-Process -Id
... означает, что параметр Id принимает одно или несколько целочисленных значений.
В предыдущем примере Get-Process параметр Name использовался для сужения результатов. Однако если вы хотите сузить его до более конкретного процесса, вы можете использовать параметр ID , который требует целого числа, как указано в его синтаксисе.
Get-Process -Id 3016
Тогда в списке вы увидите только один процесс:
PowerShell обрабатывает все данные как объекты. Для создания скрипта эти объекты проходят через ряд командлетов или функций, соединенных символом вертикальной черты (|). Для эффективного сценария важен выбор правильных командлетов и их логическое соединение с помощью конвейера.
Предположим, вы создаете скрипт для сортировки и отображения 5 файлов, занимающих больше всего места в папке. Существуют более эффективные способы создания скрипта сортировки файлов, но следующий простой способ легко понять:
Чтобы сделать это в PowerShell, используйте конвейер, который выглядит следующим образом:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Теперь, когда у нас есть работающий конвейер, вы можете сохранить его как файл сценария PS1, чтобы вам не приходилось импортировать его каждый раз при использовании.
Самый простой способ создать файл PS1 — вставить сценарий в Блокнот и сохранить файл с расширением .ps1.
После создания файла PS1 вы можете использовать его в PowerShell, запустив ./ScriptName.ps1 :
Совет : Если вы получили ошибку разрешений, самым быстрым решением будет запустить PowerShell с правами администратора при запуске скрипта.
Поздравляю! Теперь вы можете создать скрипт PowerShell PS1.
Читать и понимать чудеса новых технологий — это одно, а вот применять их на практике — совсем другое! В оставшейся части статьи мы разработаем скрипт PowerShell, чтобы продемонстрировать его возможности и использование.
DIR — одна из самых распространённых команд в CMD.EXE . Эта команда показывает все файлы и подкаталоги, содержащиеся в родительском каталоге (как показано на рисунке 1). Наряду с названием каждого объекта предоставленная информация также включает дату и время последнего обновления, а также размер каждого файла. DIR также отображает общий размер всех файлов в каталоге, а также общее количество файлов и подкаталогов.
Рисунок 1
Запуск DIR в PowerShell также создает список каталогов, как на рисунке 2, но он немного отличается. В PowerShell нет команды DIR, но вместо нее есть Get-ChildItem, которая выполняет ту же функцию. В PowerShell DIR является псевдонимом для Get-ChildItem. В этом посте я не собираюсь вдаваться в подробности псевдонимов. DIR в PowerShell можно рассматривать как сокращение от Get-ChildItem.
DIR в PowerShell предоставляет большую часть той же информации, что упомянута выше: список файлов и папок, дату и время их последнего обновления, а также размер каждого файла. Однако в нем отсутствует сводная информация, которую предоставляет DIR в CMD.EXE: общий размер всех файлов в каталоге, общее количество файлов и общее количество подкаталогов.
Рисунок 2
Для примера вам потребуется создать скрипт PowerShell, имитирующий команду CMD.EXE DIR. Ниже я объясню наиболее важные части сценария.
DIR.PS1: Заголовок
Скрипт PowerShell состоит из команд PowerShell в текстовом файле с расширением .PS1. Вместо DIR вы будете использовать текстовый файл с именем DIR.PS1.
Чтобы запустить скрипт, введите следующую команду на экране PowerShell:
.DIR.PS1 X:Folder
Где X — буква раздела диска (например, C, D, E), а Folder — имя папки.
Если вы хотите узнать некоторую информацию о разделе диска, вам придется использовать инструментарий управления Windows (WMI). Подробности WMI выходят за рамки данной статьи, поэтому мы не будем их здесь рассматривать. Однако приведенный ниже код PowerShell достаточно прост для понимания без необходимости использования WMI. Вы можете создать переменную «$filter» для использования с командой Get-WmiObject. Эта переменная фильтра сообщает команде Get-WmiObject, что вам нужна информация только о конкретном диске. Результат команды Get-WmiObject сохраняется в переменной $volInfo. Помните, в PowerShell все является объектом; $volInfo теперь также является объектом результата, возвращаемым Get-WmiObject.
$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter
Теперь вы можете получить доступ ко всем объектам и методам, связанным с объектом. Серийный номер тома доступен через свойство VolumeSerialNumber. Возвращаемая информация представляет собой строку из 8 символов. Но обычно его нужно отформатировать как четыре отдельных числа, разделенных дефисом. можно сделать аналогично тому, как в строке ниже. Дефис в конце первой строки — это символ продолжения строки в PowerShell. По сути, он просто сообщает PowerShell, что строка не разорвана, а включает следующую строку. При написании кода разделять строки не нужно, но для уменьшения ширины и удобства чтения кода это следует сделать.
$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)
Теперь, когда у вас есть объект $volInfo, вы можете вывести информацию заголовка DIR на экран. Если у диска нет имени, текст, выводимый на экран, будет немного отличаться от текста, выводимого на экран, если у диска есть имя. Для проверки того, является ли свойство VolumeName пустой строкой, используется простой оператор If-Else. Команда Write-Host используется для записи отдельных строк команд на экран.
If ($volInfo.VolumeName -eq "") { Write-Host (" Volume in drive " + $drive + " has no label") } Else { Write-Host (" Volume in drive " + $drive + " is " + $volInfo.VolumeName) } Write-Host (" Volume Serial Number is " + $serial) Write-Host ("`n Directory of " + $args[0] + "`n")
Символ «`n» в начале и конце команды Write-Host используется для вставки новых строк до и после текста. Команда Write-Host добавляет новую строку в конец каждой строки. Таким образом, эффект «`n» заключается в создании пустых строк до и после текстовой строки.
Вы заметили «-eq» в команде If? Это оператор сравнения на равенство. В таблице ниже представлены все операторы сравнения:
-экв, -икв | Сравнить по |
-не, -ине | Сравнение не равнозначно |
-гт, -игт | Сравнить больше чем |
-ге, -иге | Сравнить больше или равно |
-лт, -илт | Сравнить меньше, чем |
-ле, -иле | Сравнить меньше или равно |
Символ -i перед операторами сравнения указывает на то, что оператор нечувствителен к регистру.
Рисунок 3: Выходные данные скрипта, которые у вас есть в данный момент
DIR.PS1: Список файлов/папок
Теперь вы готовы отобразить содержимое и свойства этой папки. Первое, что нужно сделать, — вызвать команду PowerShell Get-ChildItem, чтобы получить набор файлов и передать их в скрипт в качестве параметра. Команда Get-ChildItem извлечет коллекцию объектов файлов и папок, а не только их имена, но и передаст эти объекты непосредственно в команду Sort-Object для их сортировки. По умолчанию команда Sort-Object сортирует объекты на основе свойства Name. Поэтому вам не нужно описывать какие-либо другие параметры. Отсортированный набор объектов затем будет сохранен в переменной с именем $items.
$items = Get-ChildItem $args[0] | Sort-Object
Получив коллекцию объектов файлов и папок, вам необходимо просмотреть их и отобразить соответствующие функции. Для этого используется команда ForEach. Для каждого файла или папки будут отображаться следующие характеристики: дата и время последнего обновления, имя, длина или размер файла. Странно выглядящие строки внутри скобок — это коды формата строк .NET. Они используются для выравнивания полей по левому/правому краю и форматирования дат, времени, чисел. Понимание этих кодов формата строки не очень важно, поскольку они не являются существенными для сути этого скрипта.
Команда If позволяет определить, является ли объект каталогом или нет. Если первый символ атрибута Mode — «d», объект является каталогом. Вам необходимо дважды проверить, поскольку код, написанный для каталогов, часто отличается от кода, написанного для файлов.
Обратите внимание на строку $totalDirs++ внутри оператора If. Это счетчик, отвечающий за отслеживание количества папок. Аналогично существует переменная $totalFiles, которая используется для отслеживания общего размера всех файлов. Эти значения всегда рассчитываются во время выполнения. Но они отображаются только после завершения процесса листинга файлов.
ForEach ($i In $items)
{
$date = "{0, -20:MM/dd/yyyy hh:mm tt}" -f $i.LastWriteTime
$file = $i.Name
If ($i.Mode.SubString(0, 1) -eq "d")
{
$totalDirs++
$list = $date + " {0, -15}" -f "
" + " " + $file
}
Else
{
$totalFiles++
$size = "{0, 18:N0}" -f $i.Length
$list = $date + $size + " " + $file
}
$totalSize += $i.Length
Write-Host $list
}
Рисунок 4: Отображает выходные данные обновленного скрипта.
DIR.PS1: Нижний колонтитул
Осталось только вывести на экран общее количество файлов, папок, общий размер всех файлов и свободное место на этом разделе диска. Для этого вам понадобится использовать переменные-счетчики ($totalFiles, $totalDirs, $totalSize), созданные в предыдущем разделе. Узнать, сколько свободного места осталось, можно из переменной $volInfo, созданной в начале скрипта.
Write-Host ("{0, 16:N0}" -f $totalFiles + " File(s)" + `
"{0, 15:N0}" -f $totalSize + " bytes")
Write-Host ("{0, 16:N0}" -f $totalDirs + " Dir(s)" + `
"{0, 16:N0}" -f $volInfo.FreeSpace + " bytes free`n")
Рисунок 5: Отображает полные выходные данные скрипта.
Прогнозы и улучшения могут быть
Хотя созданный вами скрипт выдает практически идентичный результат команде CMD.EXE DIR, есть некоторые предостережения, о которых следует знать, и некоторые улучшения, которые можно внести.
С помощью PowerShell можно автоматизировать практически любые задачи, например, пакетное переименование файлов для обеспечения согласованности или автоматический запуск приложений. Давайте напишем несколько простых скриптов Windows PowerShell, чтобы увидеть, как это работает.
Примечание : Если при выполнении скрипта возникла ошибка, связанная с политикой выполнения, вам может потребоваться временно разрешить выполнение скрипта, выполнив команду «Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass».
Пакетное переименование файлов в папке
Вы можете использовать PowerShell для копирования, перемещения и удаления файлов на вашем ПК. Вы также можете выполнить пакетное переименование файлов определенного типа. Например, вот как можно переименовать несколько текстовых файлов, заменив префикс «oldco» на «newco» в их именах:
Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}
В приведенном выше скрипте «.txt» — это фильтр расширений файлов. Вы можете изменить его и установить на .jpg, .docx и т. д. для поиска различных типов файлов.
Автоматический запуск приложения
Если вы каждый день открываете один и тот же набор приложений, вы можете написать скрипт PowerShell для их запуска одним щелчком мыши:
#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"
Вставьте скрипт в файл «Блокнота» и сохраните его как LaunchFavoriteApps.ps1. Затем просто дважды щелкните файл, чтобы запустить все приложения, перечисленные в скрипте.
Скопируйте важные файлы в резервную папку.
Вы можете периодически создавать резервные копии важных файлов в резервной копии, используя следующий скрипт. Обязательно измените исходный и целевой пути по мере необходимости:
#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse
Из-за множества типов файлов, которые загружаются каждый день, папка «Загрузки» может быстро засориться разбросанными по ней файлами. Чтобы исправить это, мы можем написать скрипт PowerShell, который сортирует загруженные файлы по папкам по типу файла в конце каждого дня.
Откройте новый файл Блокнота и вставьте следующий скрипт. Обязательно измените путь к исходной папке в скрипте так, чтобы он соответствовал пути к папке «Загрузки»:
# Change the source folder path below
$sourcePath = "E:\Downloads"
# Add file mapping folder names; the Others folder includes all the files that do not match file types in the other categories
$fileTypes = @{
"Documents" = @("*.docx", "*.pdf", "*.txt")
"Images" = @("*.jpg", "*.png", "*.gif")
"Media" = @("*.mp4", "*.mp3", "*.mov")
"Zip" = @("*.zip", "*.rar")
"ISO" = @("*.iso")
"Others" = @("*")
}
# Iterate through each folder type and prepare a destination folder for organizing files
foreach ($folder in $fileTypes.Keys) {
# Create the destination folder path
$destPath = Join-Path -Path $sourcePath -ChildPath $folder
# Check if the destination folder exists, and create it if it doesn't
if (!(Test-Path -Path $destPath)) {
New-Item -ItemType Directory -Path $destPath | Out-Null
}
# Move matching files from the source folder to the destination folder based on file type patterns
foreach ($pattern in $fileTypes[$folder]) {
Get-ChildItem -Path $sourcePath -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop
Write-Output "Moved: $($_.FullName) to $destPath"
} catch {
Write-Warning "Failed to move file: $($_.FullName). Error: $_"
}
}
}
}
Write-Output "Files organized successfully!"
Чтобы сохранить файл, нажмите Файл > Сохранить как и введите OrganizeDownloadsFolder.ps1 в качестве имени файла. Затем нажмите « Сохранить как тип» и выберите «Все файлы» . Дважды щелкните файл OrganizeDownloadsFolder.ps1 , чтобы запустить скрипт.
Конечно, написание сценариев является частью процесса автоматизации. Вторая часть — убедиться, что скрипт может быть автоматически запущен для выполнения задачи. Для этого мы можем создать запланированные задачи для запуска скрипта ежедневно или по мере необходимости.
Откройте PowerShell, затем скопируйте и вставьте следующий скрипт и нажмите Enter . Обязательно замените «J:\OrganizeDownloadsFolder.ps1» на полный путь к файлу вашего скрипта OrganizeDownloadsFolder.ps1 .
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File 'J:\OrganizeDownloadsFolder.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At "5:00 PM"
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "OrganizeDownloadsFolderDaily"
После этого нажмите Enter . Скрипт создаст запланированную задачу в Планировщике заданий для запуска скрипта организации файлов каждый день в 17:00. Если вы предпочитаете другое время, вы можете изменить его в скрипте выше.
Кроме того, вы можете использовать PowerShell для автоматизации других повседневных задач, таких как скрипт мониторинга свободного места, который оповещает вас, когда на основном диске заканчивается свободное место, защита паролем пакетов PDF-документов и даже применение живых обоев из папки с изображениями.
Хотя PowerShell — это мощный язык сценариев и утилита, его освоение и использование не займут много времени, особенно если вы не знакомы со средой .NET Framework. Надеюсь, эта статья и пример скрипта будут полезны всем, кто хочет разобраться в PowerShell. Но созданный в примере скрипт довольно прост. Полагаю, что его можно построить и развить более полно, чтобы он лучше подходил для более сложных приложений.
В настоящее время Microsoft испытывает трудности с привлечением пользователей к новым продуктам и услугам.
У всех нас есть повторяющиеся задачи, которые мы хотим автоматизировать на наших ПК. К счастью, существует множество сторонних приложений для Windows, которые могут взять на себя эту вину и помочь вам эффективнее использовать свое время.
Умные телевизоры действительно покорили мир. Благодаря множеству замечательных функций и возможности подключения к Интернету технологии изменили то, как мы смотрим телевизор.
Холодильники — привычные бытовые приборы. Холодильники обычно имеют 2 отделения: холодильное отделение просторное и имеет подсветку, которая автоматически включается каждый раз, когда пользователь ее открывает, а морозильное отделение узкое и не имеет подсветки.
На сети Wi-Fi влияют многие факторы, помимо маршрутизаторов, пропускной способности и помех, но есть несколько разумных способов улучшить работу вашей сети.
Если вы хотите вернуться к стабильной версии iOS 16 на своем телефоне, вот базовое руководство по удалению iOS 17 и понижению версии с iOS 17 до 16.
Йогурт — замечательная еда. Полезно ли есть йогурт каждый день? Как изменится ваше тело, если вы будете есть йогурт каждый день? Давайте узнаем вместе!
В этой статье рассматриваются наиболее питательные виды риса и способы максимально увеличить пользу для здоровья любого выбранного вами вида риса.
Установление режима сна и отхода ко сну, смена будильника и корректировка рациона питания — вот некоторые из мер, которые помогут вам лучше спать и вовремя просыпаться по утрам.
Арендуйте, пожалуйста! Landlord Sim — мобильная игра-симулятор для iOS и Android. Вы будете играть за владельца жилого комплекса и начнете сдавать квартиры в аренду, чтобы улучшить интерьер своих апартаментов и подготовить их к приему арендаторов.
Получите игровой код Bathroom Tower Defense Roblox и обменяйте его на потрясающие награды. Они помогут вам улучшить или разблокировать башни с более высоким уроном.
Давайте максимально подробно изучим конструкцию, обозначения и принципы работы трансформаторов.
От лучшего качества изображения и звука до голосового управления и многого другого — эти функции на базе искусственного интеллекта делают смарт-телевизоры намного лучше!
Поначалу люди возлагали большие надежды на DeepSeek. Как ИИ-чат-бот, позиционируемый как серьезный конкурент ChatGPT, он обещает интеллектуальные возможности и возможности чата.
Легко упустить важные детали, записывая другие важные вещи, а попытки делать заметки во время общения могут отвлекать. Решение — Fireflies.ai.
Аксолот в Minecraft станет отличным помощником для игроков при действиях под водой, если они знают, как им пользоваться.
Конфигурация A Quiet Place: The Road Ahead имеет довольно высокий рейтинг, поэтому вам нужно будет рассмотреть ее перед принятием решения о загрузке.