Geek School Научете как да автоматизирате Windows с PowerShell
В това издание на Geek School ще ви помогнем да разберете мощния скриптов език на PowerShell, който е вграден в Windows, и е изключително полезен за познаване в ИТ среда.
Въпреки че тази серия не е структурирана около изпит, изучаването на PowerShell е едно от най-важните неща, които можете да направите като мрежов администратор, така че ако има нещо, което искате да научите, за да помогнете на кариерата си в ИТ, това е то. Плюс това е много забавно.
Въведение
PowerShell е най-мощният инструмент за автоматизация, който Microsoft може да предложи, както и черупки и скриптов език.
Моля, обърнете внимание, че тази серия е базирана на PowerShell 3, който се доставя с Windows 8 и Server 2012. Ако използвате Windows 7, моля изтеглете актуализацията на PowerShell 3, преди да продължите.
Запознайте се с конзолата и ISE
Има два начина за взаимодействие с PowerShell извън кутията, конзолата и интегрираната среда за скриптове - известна още като ISE. ISE значително се е подобрил от ужасната версия, доставена с PowerShell 2 и може да бъде отворена чрез натискане на комбинацията клавиши Win + R, за да се покаже стартираща кутия, след това да напишете powershell_ise и да натиснете Enter.
Както можете да видите, ISE спортира разделен изглед, така че можете бързо да създадете скрипт, докато все още сте в състояние да видите резултата в долната половина на ISE. Долната половина на ISE, където се отпечатват резултатите от вашия скрипт, може да се използва и като REPL подкана - подобно на командния ред. V3 ISE най-накрая добави поддръжка за intellisense както в прозореца на скрипта, така и в интерактивната конзола.
Като алтернатива можете да взаимодействате с PowerShell с помощта на PowerShell Console, което ще използвам за по-голямата част от тази серия. Конзолата PowerShell се държи много подобно на командния ред - просто въвеждате команди и изхвърля резултатите. За да отворите конзолата на Windows PowerShell, отново натиснете комбинацията клавиши Win + R, за да отворите поле за изпълнение и въведете powershell, след което натиснете клавиша enter.
REPL подкани като това са страхотни за незабавно удовлетворение: въвеждате команда и получавате резултати. Докато конзолата не предлага intellisense, тя предлага нещо, наречено завършване на табулацията, което функционира по същия начин - просто започнете да въвеждате команда и натиснете tab, за да преминете през възможни съвпадения..
Използване на системата за помощ
В предишните версии на PowerShell файловете за помощ бяха включени, когато сте инсталирали Windows. Това беше добро решение в по-голямата си част, но ни остави значителен проблем. Когато помощният екип на PowerShell трябваше да престане да работи с помощните файлове, разработчиците на PowerShell все още бяха заети с кодиране и правене на промени. Това означаваше, че когато PowerShell се изпрати, помощните файлове бяха неправилни, защото не съдържаха по-новите промени, направени в кода. За да реши този проблем, PowerShell 3 идва без помощни файлове от кутията и включва актуализирана помощна система. Това означава, че преди да направите нещо, ще искате да изтеглите най-новите помощни файлове. Можете да направите това, като отворите PowerShell Console и изпълните:
Актуализация-Помощ
Поздравления за първата команда на PowerShell! Истината е, че командата Update-Help има много повече възможности, отколкото просто да я стартира и за да ги видим, ще искаме да видим помощта за командата. За да видите помощта за команда, просто прехвърлете името на командата, с която искате помощ, към параметъра Name от командата Get-Help, например:
Get-Help -Name Update-Help
Вероятно се чудите как да тълкувате целия този текст така или иначе, имам предвид защо има две много информация в синтактичния раздел и защо има толкова много скоби навсякъде? Първи неща: причината, поради която има два блока информация в синтактичния раздел е, защото те представляват различни начини за изпълнение на командата. Това са технически наречени набори от параметри и можете да използвате само по една (не можете да смесвате параметри от различни групи). В горната снимка на екрана можете да видите, че най-горният набор от параметри има параметър SourcePath, докато дъното няма. Причината е, че ще използвате най-горния набор от параметри (този, който включва SourcePath), ако актуализирате помощните си файлове от друга машина в мрежата, които вече са ги изтеглили, докато няма да е необходимо да указвате пътя на източника, ако просто исках да взема най-новите файлове от Microsoft.
За да отговорите на втория въпрос, има определен синтаксис, който следват помощните файлове и тук е:
- Квадратните скоби около името на параметъра и неговият тип означава, че е незадължителен параметър и командата ще работи добре без нея.
- Квадратните скоби около името на параметрите означават, че параметрите са позиционен параметър.
- Това, което е вдясно от параметър в ъгловите скоби, ви казва типа данни, който параметърът очаква.
Докато трябва да се научите да четете синтаксиса на помощния файл, ако някога сте сигурни за даден параметър, просто добавете -Full до края на вашата команда за помощ и превъртете надолу до секцията с параметри, където ще ви разкаже малко повече за всеки. параметър.
Get-Help -Name Update-Help-Full
Последното нещо, което трябва да знаете за системата за помощ е как можете да я използвате, за да откриете команди, което всъщност е много лесно. Виждате ли, PowerShell приема заместващи символи почти навсякъде, така че използването им заедно с командата Get-Help ви позволява лесно да откривате команди. Например търся команди, които се занимават с услугите на Windows:
Услугата Get-Help -Name *
Разбира се, цялата тази информация може да не е удобна за прилеп, но повярвайте ми, отделете време и научете как да използвате системата за помощ. Той е удобен през цялото време, дори и за напреднали сценаристи, които правят това от години.
Сигурност
Това не би било правилно въведение, без да се споменава сигурността. Най-голямото притеснение за екипа на PowerShell е, че PowerShell става най-новата и най-голямата точка за атака на скриптове. Те са поставили няколко мерки за сигурност, за да се уверят, че това не се случва, затова нека ги разгледаме.
Най-основната форма на защита идва от факта, че PS1 файловото разширение (разширението, използвано за обозначаване на PowerShell скрипт) не е регистрирано с PowerShell хост, всъщност регистриран с Notepad. Това означава, че ако щракнете два пъти върху файл, той ще се отвори с тефтер, вместо да работи.
Второ, не можете да стартирате скриптове от черупката, като просто напишете името на скрипта, трябва да посочите пълния път към скрипта. Така че, ако искате да стартирате скрипт на вашето устройство C, трябва да напишете:
C: \ runme.ps1
Или ако вече сте в основата на диска C, можете да използвате следното:
.\ runme.ps1
И накрая, PowerShell има нещо, наречено Правила за изпълнение, които ви пречат да изпълнявате стария скрипт. Всъщност по подразбиране не можете да изпълнявате никакви скриптове и трябва да промените политиката си за изпълнение, ако искате да им бъде позволено да ги изпълняват. Има 4 важни правила за изпълнение:
- Ограничен: Това е конфигурацията по подразбиране в PowerShell. Тази настройка означава, че не може да се изпълнява никакъв скрипт, независимо от неговия подпис. Единственото нещо, което може да се изпълни в PowerShell с тази настройка, е индивидуална команда.
- AllSigned: Тази настройка позволява скриптовете да се изпълняват в PowerShell. Скриптът трябва да има свързан цифров подпис от доверен издател. Ще има подсказка, преди да стартирате скриптовете от надеждни издатели.
- RemoteSigned: Тази настройка позволява на скриптовете да се изпълняват, но изисква скриптът и конфигурационните файлове, изтеглени от интернет, да имат свързан цифров подпис от доверен издател. Скриптите, стартирани от локалния компютър, не трябва да се подписват. Няма подкани преди стартирането на скрипта.
- неограничен: Това позволява на неподписани скриптове да се изпълняват, включително всички скриптове и конфигурационни файлове, изтеглени от Интернет. Това ще включва файлове от Outlook и Messenger. Рискът е да се изпълняват скриптове без никакъв подпис или сигурност. Ние възобновихме, че никога не ни правите тази настройка.
За да видите каква е текущата Ви политика за изпълнение, отворете PowerShell Console и въведете:
Get-ExecutionPolicy
За този курс и повечето други обстоятелства, политиката RemoteSigned е най-добрата, така че продължете напред и променете правилата си, като използвате следното.
Забележка: Това трябва да се направи от повишена PowerShell Console.
Set-ExecutionPolicy RemoteSigned
Това е всичко за хората от това време, ще се видим утре за още едно забавно PowerShell.
Отказ от отговорност: Подходящият термин за команда PowerShell е cmdlet и оттук нататък ще използваме тази правилна терминология. Беше по-подходящо да ги наречем команди за това въведение.
Ако имате някакви въпроси, можете да ме чуете @taybgibb или просто да оставите коментар.