Написание и запуск скриптов в PowerShell

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

PowerShell. Проверить существует ли файл или папка

Если нужно проверить, существует ли папка или файл в скрипте PowerShell, то нужно воспользоваться командой «Test-Path». Она возвращает «True», если файл или папка существует, и «False», если файла или папки нет.

#Обновлено 21 мая 2020 года $fpath = «C:\» if ($isfile) { Write-host «Файл существует» } else { Write-host «Файл не существует» }

Более подробную информацию о возможностях команды “Test-Path” можно узнать, введя в консоли PowerShell команду «man Test-Path». С помощью этой команды можно работать не только с папками и файлами, но и, к примеру, с переменными окружения Windows и ветками реестра.

ПоделитьсяTвитнутьPinПоделиться0 Поделились

  • 17 декабря 2014, Alexey
  • Windows и программы
  • Тэги: PowerShell, windows, отладка
  • 7 комментариев

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

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

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

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

[ad name=»Responbl»]

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

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

[ad name=»Responbl»]

Как с помощью PowerShell загрузить файл на компьютер?

В данном примере, нам понадобится вот такая команда:

$client = new-object $ ( “Ссылка для скачивания”, “Путь к файлу”)

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

Таким образом, мы получаем в пример следующую команду:

$client = new-object $(“”,”C:\Users\Andrey\Desktop\”)

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

$ = Get-Credential

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

Таким образом, команда для аутентификации и закачки файла будет выглядеть следующим образом:

$client = new-object $ = Get-Credential $(“”,”C:\Users\Andrey\Desktop\”)

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

Создание сценария с использованием интегрированной среды сценариев (ISE)

Кроме того, вы можете использовать консоль PowerShell ISE для написания сценариев в Windows 10.

Интегрированная среда сценариев — сложный инструмент, но вы можете начать, используя следующие шаги:

  1. Откройте Пуск.
  2. Найдите Windows PowerShell ISE, щелкните правой кнопкой мыши и выберите параметр «Запуск от имени администратора».
  3. Среда запустится с пустым файлом .ps1, где вы можете создать или вставить скрипт, который хотите запустить. Например: Write-Host «Congratulations! Your first script executed successfully»
  4. Нажмите меню Файл.
  5. Нажмите «Сохранить».
  6. Введите имя для сценария. Например, first_
  7. Нажмите кнопку Сохранить.

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

Переименование нескольких файлов из командной строки

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

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

Самый быстрый способ открыть окно командной строки в нужном место это сначала нужно открыть папку в File Explorer. В меню «Файл» выберите пункт «Открыть командную строку», а затем выберите пункт «Открыть командную строку».

Чтобы переименовать один файл, вы можете использовать следующий синтаксис команды:

ren «current_» «new_»

Эти кавычки необходимы, если ваши имена файлов содержат пробелы. Если пробелов нет то вы не нуждаетесь в кавычках. Так, например, переименовать файлы с «WordFile (1) .docx» в «файл (01) .docx»используем следующую команду:

ren «wordfile (1).docx» «my word file (01).docx»

Поскольку ren команда может использоваться и для изменения расширения файла, вы можете также использовать его для изменения расширений нескольких файлов одновременно. Скажем, например, у вас был выбор .txt файлов которые вы хотели , чтобы они превратились в .html файлы. Вы можете использовать следующую команду вместе с шаблоном подстановки звёздочкой * :

ren *.txt *.html

Другие вопросы по пользованию

У многих возникает вопрос, как узнать версию PowerShell? Для этого выполните следующее:

  1. Откройте приложение.
  2. Введите $PSVersionTable.
  3. Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $
  4. В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.

Ещё один вопрос, на который стоит дать ответ — как удалить PowerShell? Для этого потребуются такие действия:

  • Зайдите через Панель управления в меню установки и удаления программ.
  • Найдите ветку Microsoft Windows
  • Удалите обновление для компонента WindowsPowerShell , следуйте инструкциям системы.

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

Как временно исправить проблему с файлами?

Легкое Исправление

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

C:\User\guymc\Documents\My

Понятно, кто в этом случае виновник. Найдите файл в проводнике Windows или в проводнике, как он называется в Windows 10, нажмите один раз на него, нажмите F2, чтобы переименовать его, и измените это глупое имя файла на более разумное. Задача решена.

Менее простые исправления

Не всегда легко решить эту проблему. Иногда вы не можете изменить имена файлов или каталогов по любой причине.

Следующие решения помогут вам. Их несложно сделать.

Перемещение, удаление или копирование файлов или каталогов с помощью PowerShell Иногда вы получаете сообщение об ошибке при попытке переместить, удалить или скопировать каталоги, где количество символов для пути к файлу превышает 260.

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

Возможно, путь к файлу выглядит примерно так:

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\

Этот путь к файлу составляет 280 символов. Поэтому мы не можем скопировать каталог оттуда куда-либо еще с помощью обычного метода копирования-вставки. Мы получаем ошибку Destination Path Too Long.

Давайте предположим, что по какой-то причине мы не можем переименовать каталоги, в которые вложен файл. Что мы делаем?

Когда откроется PowerShell, вы окажетесь в корне своего пользовательского каталога. Продолжайте, предполагая, что C:\Users\guymc — ваш пользовательский каталог.

Каталог с именем This находится в каталоге Documents. Чтобы перейти в каталог Documents, мы используем команду cd Documents.

Вы увидите быстрое изменение текущего каталога на C:\Users\guymc\Documents. Это хорошо. Мы работаем ближе к каталогам, которые облегчат жизнь.

Копирование каталога с использованием Copy-Item

Мы хотим скопировать каталог This и его содержимое в ThatNewFolder. Давайте используем команду PowerShell Copy-Item с параметрами -Destination и -Recurse.

-Destination сообщает PowerShell, где мы хотим, чтобы копия находилась. -Recurse говорит PowerShell скопировать все элементы внутри к месту назначения. Копирование оставляет оригиналы там, где они есть, и делает все новые в месте назначения.

Copy-Item This -Destination ThatNewFolder -Recurse

Переместить каталог с помощью Move-Item

Допустим, мы хотим переместить каталог This, а также все каталоги и файлы в нем, в ThatNewFolder. Перемещение не оставляет оригинал на месте.

Мы можем использовать команду PowerShell Move-Item с параметрами -Path и -Destination. -Path определяет элемент, который мы хотим переместить, и -Destination сообщает PowerShell, где мы хотим его получить.

Команда поместит это в ThatNewFolder. Он также будет перемещать все, что находится внутри этого каталога. Move-Item может использоваться для перемещения файлов или каталогов, и он работает независимо от пути к файлу или длины имени файла.

Move-Item -Path This -Destination ThatNewFolder

Чтобы убедиться, что это работает, используйте команду cd ThatNewFolder, чтобы войти в ThatNewFolder. Затем используйте команду dir для вывода списка каталогов в ThatNewFolder. Вы увидите, что этот каталог находится там.

Удалить каталог с помощью Remove-Item

Если мы хотим удалить этот каталог и все в нем, мы используем команду Remove-Item.

Командлет Remove-Item обладает некоторой встроенной безопасностью, которая затрудняет удаление каталога с содержимым внутри него. В нашем примере мы знаем, что хотим удалить все, поэтому мы будем использовать параметры -Recurse, чтобы заставить его удалять все внутри, и -Force, чтобы он делал это, не спрашивая нас, уверены ли мы в каждом элементе внутри.

Имейте в виду! Восстановить что-либо удаленное таким образом было бы чрезвычайно сложно.

Remove-Item This -Recurse -Force

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

Вот и все

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

Как подсчитать контрольную сумму файла из консоли Windows

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

Например, чтобы посчитать контрольную сумму SHA1 с помощью утилиты CertUtil нужно запустить командную строку Windows 10, 8 или Windows 7 и ввести следующую команду:

certutil -hashfile путь_к_файлу алгоритм

Вот пример ее работы через несколько минут:

Считаем контрольную сумму в PowerShell

PowerShell — это средство автоматизации от Microsoft, с интерфейсом командной строки и языка сценариев, работает и включена в состав Windows 8 и новее.

Чтобы вычислить контрольную сумму файла необходимо выполнить команду Get-FileHash указав через пробел имя файла и алгоритм вычисления контрольной суммы:

Get-FileHash "Disk:\Full Path to file\File " -Algorithm SHA1

Обратите внимание, что полный путь и имя файла лучше заключить в двойные кавычки.

По-умолчанию, если не указать тип контрольной суммы, то будет посчитана SHA-256.

Для алгоритмов вычисления контрольной суммы в Windows PowerShell поддерживаются следующие значения:

Как подсчитать контрольную сумму файла из консоли Windows
  • SHA1
  • SHA256 (по умолчанию)
  • SHA384
  • SHA512
  • MD5

Для оформления вывода в виде списка можно использовать параметр | Format-List. Например:

Get-FileHash "Disk:\Full Path to file\File " | Format-List

Тогда результат работы будет выглядеть так:

Подробнее об использовании команды Get-FileHash можно прочитать на официальном сайте Microsoft — -ru/powershell/module/-filehash

Какой алгоритм вычисления контрольных сумм самый правильный

MD5, SHA-1, SHA-256 и прочие – это разные алгоритмы хеш-функции. Хэши являются результатом работы криптографических алгоритмов, и представляют собой строку символов. Часто эти строки имеют фиксированную длину, независимо от размера входных данных.

Как подсчитать контрольную сумму файла из консоли Windows

MD5 самый быстрый, считается устаревшим, а SHA-256 имеет наименьшую вероятность коллизии, когда два разных файла имеют одинаковую контрольную сумму.

Для проверки целостности файла вам следует использовать тот, который предоставляет издатель. Если у вас на выбор есть несколько контрольных сумм, то лучше выбрать в следующей последовательности MD5, SHA-1, SHA-256, последний вариант является более предпочтительным.

Инициализация многомерного массива

$array = @(1, 2, 3), @(4, 5, 6), @(7, 8, 9) $array[0] # 1 $array[0][0] # 1 $array[2][2] # 9 Что ещё

Дополнения к вышеописанным объектам существуют ещё объекты ArrayList, OrderedDictionary, PSObject, которые могут быть полезны вам для хранения и обработки значений. Возможно в дальнейшем я опишу их в отдельной статье. И расскажу про отличия от массивов и хеш-таблиц. Но пока я этого не сделал, то настоятельно рекомендую Вам самостоятельно поискать в Интернет информацию о PSObject. Это мощное средство, которое в чём-то похоже на Hashtable, при этом обладает большей производительностью.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Понравилась статья? Поделиться с друзьями:
Adblock
detector