Я пишу сценарии в одной форме уже более 20 лет. За это время я написал скрипты в пакетном режиме, AutoIT, AutoHotkey, SQL, PHP, ASP, VBscript и PowerShell. Я люблю автоматизацию и обычно использую любой язык сценариев, который мне нужен.

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

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

Давайте продолжим этот разговор о PowerShell.

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

У вас есть сайт adamtheautomator.com и тысячи других ресурсов, к которым вы можете обратиться для быстрой диагностики проблемы. ИМО, вам не нужно сосредотачиваться на том, как написать сценарий Powershell, вам нужно больше сосредоточиться на том, что писать в сценарии. Позвольте мне привести вам пару примеров.

Вам нужно запросить SQL-сервер? Не проблема! Код Powershell уже записан в красивый модуль под названием SQL PSX. Загрузите его, импортируйте и сделайте это. Теперь у вас есть возможность запрашивать SQL, но где хранятся нужные вам данные?

«Я вижу 500 таблиц и представлений, где снова хранились данные?»

«Черт, похоже, мне придется выяснить, как сделать несколько JOIN…»

Прежде чем вы это узнаете, вы взламываете копию SQL For Dummies. Что намного сложнее, чем как.

Вам нужно выполнить запрос WMI? Не проблема! Одна строка с Get-WmiObject или Get-CIMInstance и все готово.

Вы говорите, что хотите собрать что-нибудь об батареях для ваших ноутбуков?

Так где ЭТО хранится?

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

Этот близок и дорог моему сердцу. Вы знаете, что можете использовать Start-Process для запуска процесса msiexec.exe для его установки, но как?

Какой GUID мне нужно передать ему?

Будет ли он бомбить, если обнаружит уже существующую версию?

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

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

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

Определите, чего вы хотите, выясните, что вы собираетесь делать и где хранится эта информация. Как только вы проделаете эту работу, написание сценария для этого просто встанет на свои места.