Использование PowerShell для домашних пользователей — руководство для начинающих

Кто не хотел бы быть волшебником и произнести несколько слов, чтобы произошли волшебные вещи? Что ж(Well) , мы не можем показать вам, как быть волшебником, но мы можем показать вам, как немного поколдовать с компьютером.

Если у вас есть компьютер с Windows с установленной на нем (Windows)Windows 7 , у вас есть PowerShell . Кроме того, если у вас есть компьютер с Windows 7 , обновите его в целях безопасности.

Но эта статья предназначена не только для пользователей Windows . Последняя версия PowerShell бесплатна, ее можно установить и использовать на компьютерах Mac и Linux .

Это важно, потому что то, что вы узнаете о PowerShell , теперь можно использовать практически на любом компьютере. Кто знает? Вы можете вывести этот навык на новый уровень и начать карьеру в области информационных технологий(Information Technology) .

Что такое PowerShell?

Высокотехнологичный ответ Microsoft состоит в том, что это «оболочка командной строки, разработанная специально для системных администраторов». ≈ Звучит(” Sounds) устрашающе. Но это не так. Вы заботитесь о своем компьютере? Да, тогда вы системный администратор в своем доме.

Говорите ли вы своему компьютеру, что делать со щелчками и нажатиями клавиш? Да, так что думайте о командной строке как о еще одном окне, в котором вы вводите что-то, чтобы сказать вашему компьютеру, что делать. Ты можешь сделать это.

PowerShell похож на язык программирования, но не такой загадочный, как большинство. Он действительно очень похож на обычный английский язык(English) , к которому Microsoft стремилась, чтобы его могли понять непрограммисты.

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

Что вы можете сделать с PowerShell?

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

Вручную, с помощью кликов и набора текста, этот процесс может занять от 5 минут до часа и более. При наличии правильных сценариев системному администратору(Systems Administrator) , возможно, даже не придется выполнять какую-либо часть этого.

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

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

Как использовать PowerShell?

Проще всего работать с PowerShell в интегрированной среде сценариев PowerShell (ISE)(PowerShell Integrated Scripting Environment (ISE)) . Вы можете найти его, нажав « Пуск(Start) » и введя powershell ise в строку поиска в Windows 10 . Вы должны увидеть это, как показано ниже.

В первый раз, когда мы его используем, мы собираемся запустить его от имени администратора(Administrator) . Для этого вы должны сначала иметь права администратора на своем компьютере. В меню «Пуск(Start Menu) » щелкните правой кнопкой мыши PowerShell ISE , затем выберите «Запуск от имени администратора»(Run as Administrator) .

Вы можете получить всплывающее окно с предупреждением о контроле доступа пользователей(User Access Control) ( UAC ) с вопросом, уверены ли вы, что хотите это сделать. (UAC)Щелкните Да(Yes) .

Теперь вы смотрите на PowerShell IDE . Верхняя панель окна (1) является панелью сценариев. Здесь вы будете писать свой сценарий. Нижняя часть окна (2) — это область консоли. Когда вы протестируете свой сценарий, вы увидите результат на этой панели.

Здесь вы также увидите сообщения об ошибках и тому подобное, что поможет вам исправить и улучшить ваши сценарии. Панель в правой части окна (3) является надстройкой команды. Думайте об этом как о словаре всех доступных вам команд PowerShell .

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

В окне сценариев скопируйте и вставьте следующее:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Его часть Set-ExecutionPolicy называется командлетом (произносится как командлет). Командлеты — мощная штука. Думайте(Think) о них как о коротких командах, которые вы можете дать Windows , и Windows выполнит кучу более сложных вещей, чтобы выполнить вашу команду.

Аналогия может заключаться в том, чтобы попросить вашего ребенка убрать свою комнату. Коротко(Short) и по делу. Если ваш ребенок хорошо разбирается в уборке комнаты, то он пойдет и заправит постель, сложит белье в корзину, расставит игрушки и книги по полкам и, возможно, даже пропылесосит пол. Они понимают, что все это имел в виду командлет Clean-YourRoom .

В верхней части окна вы увидите зеленую стрелку. Нажмите(Click) на это, чтобы запустить команду.

Часть -ExecutionPolicy сообщает Set-ExecutionPolicy , какую политику установить. Это параметр. Он говорит: «Я хочу, чтобы вы работали в соответствии с этими рекомендациями и делали именно это. Он говорит ему использовать определенную политику RemoteSigned .

Политика RemoteSigned гласит, что PowerShell не может выполнять или запускать любой сценарий, загруженный из Интернета(Internet) , если он не подписан доверенным издателем.

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

Давайте посмотрим на скрипт для удаления временных файлов. Он не такой мощный и тщательный, как CCleaner , но CCleaner имеет свой собственный набор проблем.

Используйте PowerShell(Use PowerShell) , чтобы освободить(Create Space) место на жестком диске(Your Hard Drive)

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

$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"

Все, что перед ним стоит знак доллара, является именем переменной. Думайте об этом как о кошельке, в который можно положить ценные вещи. Бумажник(Wallet) напоминает нам о знаке доллара, ценности звучат как переменная величина, так что мы тоже будем помнить об этом. Мы создаем кошелек или переменную с именем $TempFileLocation . Знак равенства сообщает PowerShell , что нужно поместить в эту переменную.

В этом случае мы указываем расположение временных файлов Windows — C:\Users\username\AppData\Local\Temp\* . Мы делаем это по двум причинам; это место, из которого всегда безопасно удалять файлы, и мы собираемся использовать его, чтобы сообщить PowerShell , куда он должен идти для удаления файлов.

Там, где в этом месте указано имя пользователя, замените его на свое имя пользователя. Это имя пользователя, которое вы используете для входа в свой компьютер. Звездочка (*) в конце — это подстановочный знак. Он представляет собой все, что находится в папке Temp , потому что все в папке Temp является временным, и мы хотим его удалить.

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

$TempFile = Get-ChildItem $TempFileLocation -Recurse

Мы делаем еще одну переменную. На этот раз мы собираемся использовать команду, чтобы придумать что-то, что нужно поместить в переменную $TempFile .

Get-ChildItem 

Еще одна вещь, которую вы заметите в таких командлетах, как Get-ChildItem , заключается в том, что они полностью удобочитаемы. Видите, как первое слово является глаголом? Все командлеты(Cmdlets) начинаются со слов действия, поэтому вы сразу понимаете, что они делают. ChildItem — это два существительных.

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

Из чего командлет получает дочерние элементы? Все в переменной $TempFileLocation . PowerShell перейдет к местоположению, которое мы ранее указали в $ TempFileLocation, и получит все находящиеся там дочерние элементы. Затем он поместит их в переменную $TempFile .

Итак, что же с частью -Recurse ? Это говорит Get-ChildItem просмотреть все в этом месте. Не берите файлы сразу в родительскую папку. Если в этой папке есть папки, получите также все их дочерние элементы, их дочерние элементы и так далее. Мы собираемся получить их всех.

$TempFileCount = ($TempFile).count

Да, мы создаем третью переменную с именем $TempFileCount и собираемся поместить в нее число. Где номер? Что ж, ( $TempFile).count нам это число. Вы, наверное, догадались, что часть .count будет подсчитывать все файлы, которые мы только что сохранили в $ TempFile .

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

if($TempFileCount -eq 0)

Теперь мы настраиваем условный оператор. Вы можете видеть, что он спрашивает «если». Если что? Верно ли то, что в скобках, или ложно. Скобки важны, иначе If не знает, что сравнивать. Здесь он спрашивает, равно ли число, которое мы сохранили в $TempFileCount , нулю.

-eq (-eq) это сокращение от равных. Это тип оператора сравнения. Это похоже на то, как если бы вы сказали своим детям: «Если ваша комната чистая(TempFileCount) , отлично, мы собираемся что-то сделать ». следующая вещь.

{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}

Это то, что произойдет, если $TempFileCount равен нулю. Фигурные скобки важны. Они говорят PowerShell делать только то, что находится внутри них, если $ TempFileCount равен нулю.

Он напишет на хост или на экран: «В папке C:\Users\username\Appdata\Local\Temp\* нет файлов». Параметр в конце — ForegroundColor указывает PowerShell сделать текст зеленым. Это просто облегчает отличие от сообщения об ошибке, которое обычно красного цвета.

Else

Вы знаете, что еще значит. Это часть «Ваша комната должна быть чистой, иначе…» часть проверки того, убирался ли ваш ребенок в своей комнате. Это то, что произойдет, если $TempFileCount не равен нулю.

{$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}

Это говорит о переходе к текущему местоположению, хранящемуся в $TempFile . Вертикальная линия после нее называется трубой. Он работает как реальная труба, поскольку сообщает PowerShell о необходимости направить содержимое $ TempFile в командлет, как если бы это была вода, подаваемая в стиральную машину. Затем команда Remove-Item делает то, что говорит; он удаляет все, что находится в этом месте.

Параметр -WhatIf очень важен на данном этапе. Он говорит PowerShell запустить команду, но только попробовать ее, ничего не удаляя. Просто(Just) покажите нам, что произошло бы, если бы мы действительно сделали это.

Это позволяет вам тестировать команды, ничего не меняя на вашем компьютере. Оставьте -WhatIf там до тех пор, пока вы не будете уверены, что сценарий будет делать то, что вы от него хотите, и ничего больше. Затем просто удалите это, и скрипт выполнит свою работу.

Параметр -Confirm:$false запрещает скрипту спрашивать, действительно ли вы хотите удалить файл. Вы знаете, что делает -Recurse . -Force означает удалить эту вещь, несмотря ни на что. -WarningAction имеет значение SilentlyContinue .

Это предотвращает выдачу предупреждений сценарием о том, что вы удаляете. -ErrorAction имеет значение SilentlyContinue , так что если в процессе есть какая-либо ошибка, он просто продолжает пыхтеть.

Теперь мы на последней линии.

Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}

Как и в первый раз, Write-Host выведет следующее предложение, чтобы мы знали, что произошло. Он сообщит нам, сколько файлов было удалено из папки, которую он только что обработал, и сделает это зеленым, чтобы его было легко обнаружить.

Давайте посмотрим на сценарий в целом:

$TempFileLocation = "C:\Users\guymcd\Appdata\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count

if($TempFileCount -eq "0") {
Write-Host "There are no files in the folder $TempFileLocation" - ForegroundColor Green
}
Else {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green
}

Вы можете скопировать и вставить это в свою интегрированную среду сценариев PowerShell(PowerShell ISE) и сохранить как что-то вроде delete-TemporaryFiles.ps1 . Теперь, когда вы их понимаете, вы также можете придерживаться соглашения об именах командлетов.

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

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

Где я могу узнать больше о PowerShell?

Кажется, это много! Для вашего первого сценария PowerShell этого вполне достаточно. Если вы зашли так далеко, похвалите себя. Сегодня вы многому научились, но теперь хотите узнать больше. Это здорово!

В Интернете(Internet) есть множество ресурсов, где можно узнать больше о PowerShell . Хорошим местом для начала является наша статья «Создание списка запускаемых программ с помощью командной строки или PowerShell(Generate a List of Startup Programs via Command Line or PowerShell) ». Тогда проверьте эти другие ресурсы:



About the author

Я инженер-программист с более чем двухлетним опытом работы с мобильными и настольными приложениями. У меня есть опыт работы с обновлениями Windows, службами и Gmail. Мои навыки делают меня идеальным кандидатом для таких задач, как разработка приложений для Windows или поддержка почтовых клиентов.



Related posts