Все потоки
Поиск
Написать публикацию
Обновить
1.88

PowerShell *

Расширяемое средство автоматизации от Microsoft

Сначала показывать
Порог рейтинга

Продолжаю свои разборки с мелкомягкой!

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

Мое маленькое ДАНО ХОЧУ:

сделать веб запрос к серверу из синей цмдушечки (такие вот у меня специфические желания). Можно и не из синей, но линукса под рукой у меня не оказалось, поэтому в распоряжении были только cmd и powershell.

А вот теперь ДАНО:

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

Ну и cmd и powershell почти в прямой сетевой видимости к оному.

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

Но все по порядку. Вообще легкий гуголь (а точнее его иишка) говорит, что начиная с версии 5.1 синей цмдушечки есть alias curl, который в свою очередь вызывает Invoke-WebRequest, но предупреждает, что синтаксис и параметры у них отличаются от обычного curl.exe

Пробуем командлет Invoke-WebRequest -Uri "https://ya.ru", на что цмдушечка ругается на меня своими ошибками. Немного поигравшись с всевозможными кавычками командлет побежден не был, а ошибка в своей формулировки не изменилась

Invoke-WebRequest : Базовое соединение закрыто: Непредвиденная ошибка при передаче.
строка:1 знак:1

С помощью команды host убеждаемся, что у нас стоит не самая допотопная powershell и идем копать дальше

Легкий гуголь ошибки Invoke-WebRequest : Базовое соединение закрыто: Непредвиденная ошибка при передаче. говорит, что дело в том, что он не может договориться о том, какое соединение использовать.

А гуголь поглубже напоминает, что у винды все логи в event-viewer'e и туда вообщем-то стоит ходить за ответами. Но у меня он ничего нового мне не сообщил - просто повторил все то же, что вывел мне в ответе. Еще этот же самый гуголь предлагает обновиться до версии 7.1 обещая золотые горы и устранение всех ошибок.

А вот обычная cmd и ее curl.exe была больше благосклонна ко мне и не стала истерить, как ее синяя подруга. Поэтому curl https://habr.com мне конечно ничего не вернул, но зато написал, что редиректид на https://habr.com/en/feed/ и завершилась без ошибок.

А вот при попытке зайти на самодельный сайт стал ругаться на сертификат

curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325) - Цепочка сертификатов выпущена центром сертификации, не имеющим доверия.
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the webpage mentioned above.

Но с ключем -k даже так уже не капризничал.

Усложняем задачу: нам надо не просто ткнуться в сайт, а дернуть ему ручку по GET запросу

Удивительно, но и тут проблем не возникло, добавив к команде ключ -X и указав тип запроса GET мне цмдушечка вернула ответ (потрясающая цмдушечка)

Усложняем задачу х2: теперь желаю стать владычицей морскою отправить не просто GET запрос, а еще и в его header'e добавить параметр!

curl -k -X GET https://10.10.0.1/api/getRequest -H Head-Parameter:value

Удивительно, но так тоже сработало.

Какой можно сделать вывод? правильно! черный цвет решает!

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

Теги:
+5
Комментарии5

Простейший Windows-скрипт для поиска дубликатов файлов в папке.

Проблема: в папке с бэкапами фоток скопилось много дубликатов под разными названиями.

Я не нашёл способа корректно эти дубликаты удалить средствами Windows, а ставить что попало на компьютер ради такой ерунды тоже не хотелось. Поэтому написал очень простой скрипт на Powershell. Нужно поместить его в нужную папку и в контекстном меню выбрать "Выполнить с помощью PowerShell". Конечно, сперва проверьте содержимое файла от неизвестного издателя (меня).

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

Результат выполнения
Результат выполнения

Код доступен на GitHub.

Теги:
Всего голосов 5: ↑5 и ↓0+6
Комментарии0

Простейший скрипт на PowerShell для загрузки файлов

TL;DR спиз написал скриптик для загрузки файлов, держите версию для PowerShell

Дисклеймеры:
Общий дислеймерО личности автораОтказ от ответственностиОб использовании ChatGPT

Синопсис:
Набросал скриптик для загрузки файлов на PowerShell. Скрипт простейший, взят с просторов StackOverflow и почти не имеет обвязок.

Pre-requisites:
Вам нужно иметь следующие условия для работы скрипта:

  • Создать файл urls.txt и вбить туда прямые ссылки на файлы, которые надо скачать;

    • Именно прямые ссылки без # и ? в/после имени файла, чтобы имена файлов были совместимы с файловой системой вашей ОС;

    • Без пустых строк/абзацев.

  • Хост терминала открыт в папке, где лежит urls.txt.

Запуск скрипта:
Вставьте этот скрипт в окно терминала, и поехали!

$urls = Get-Content .\urls.txt
$dir = ".\"

foreach ($i in ($urls.Count - 1)..0) {

    $filename = "$dir$(Split-Path -Leaf $urls[$i])";

    if ((Test-Path -Path $filename -PathType Leaf) -eq $False) {
        Invoke-WebRequest -Uri $urls[$i] -OutFile $filename
    }

}

Результат:
Файлы скачались! И вы довольны.

Бессмысленное продолжение в комментах.

Всего голосов 10: ↑9 и ↓1+8
Комментарии4