Geek школа вчиться використовувати Cmdlets в PowerShell
Якщо ви використовували ipconfig або ping через командний рядок, ви наполовину перетворилися на ніндзя PowerShell. Так що приходьте і приєднуйтесь до нас, коли ми відкриваємо cmdlets в цій установці Geek School.
Обов'язково перевірте нашу першу статтю, що представляє PowerShell, і стежте за рештою нашої серії протягом усього тижня.
Анатомія Cmdlet
У першій частині серії ми побачили командлет, який виглядав приблизно так:
Update-Help
Командлети PowerShell мають синтаксис Verb-Noun, який можна побачити вище. Важливо відзначити, що іменник завжди є єдиним, навіть якщо cmdlet може повернути більше одного результату. Щоб переглянути список юридичних дієслів у PowerShell, можна скористатися командлетом Get-Verb.
Знання правових дієслів і запам'ятовування правила іменника однини допомагає вгадувати імена cmdlet. Наприклад, припустимо, що ви хочете отримати список послуги і їх статус - це правильно, його так само просто, як Get-Service. Як ви думаєте, ми б отримати список запущених процеси - це правильно, Get-Process зробить свою справу.
Get-Process
Це робить його дуже легко працювати з будь-якою технологією. Наприклад, якщо ви завантажили командлети Exchange, ми могли б легко отримати список поштових скриньок на сервері за допомогою:
Get-Mailbox
Однак є виняток. В бік обміну, всі інші команди, специфічні для технології, потребуватимуть префікса. Наприклад, якщо ми хочемо, щоб користувачі, які в даний час увійшли в систему через віддалений робочий стіл, вводили:
Get-RDUserSession
Що можна побачити на скріншоті нижче.
Примітка: Цей скріншот був зроблений на сервері Server 2012, так як тут ви знайдете більшість специфічних для технології модулів.
Нещодавно я прочитав статтю Дон Джонса, хрещеного батька PowerShell, де він пояснив, що Exchange поставляється до того, як цей префікс був доданий до командлетів, тому він ніколи не реалізує їх і ніколи не буде.
Псевдоніми
Ще однією особливістю PowerShell є можливість мати кілька способів запуску однієї команди - псевдоніми, якщо це можливо. Дивовижна річ про них полягає в тому, що вони включали багато команд, які ви могли використовувати в командному рядку, а також деякі псевдоніми Linux. Наприклад, у PowerShell ми можемо отримати список каталогів за допомогою:
Get-ChildItem
Використовується для використання командного рядка? Не хвилюйтеся, вони вас охопили.
Є фон Linux? У вас також є покриття.
Коли ви робите сценарії протягом кількох років, ви, як правило, ледачі і починаєте використовувати псевдоніми багато, але це не допомагає новачкам, які збираються читати наш код. Щоб побачити, яку команду псевдонім працює під капотом, можна скористатися наведеним нижче пунктом.
Get-Alias -Назва ls
З іншого боку, якщо ви відчуваєте, що настав час зробити вашу гру вгору, ви можете використовувати параметр визначення, щоб отримати всі псевдоніми для cmdlet:
Get-ChildItem -Definition Get-ChildItem
Якщо ви прийшли з іншого фону, ви можете додати власні псевдоніми, виконавши такі дії:
Новий-Псевдонім -назва icanhazfilez -Value Get-ChildItem
Очевидно, вам потрібно замінити "icanhazfilez" на ім'я вашого нового псевдоніма і Get-ChildItem з cmdlet, який ви хочете, щоб він працював під капотом.
Зауважимо, що ви втрачаєте всі псевдоніми, які ви визначили, коли ви закриваєте оболонку. Ви можете обійти це, додавши своє визначення до сценарію профілю.
Параметри обрізання
Windows PowerShell також дозволяє обрізати імена параметрів до моменту, коли вони стануть неоднозначними, тобто до моменту, коли PowerShell більше не зможе визначити, про який параметр ви говорите. Наприклад:
Get-Service -Назва "Apple Mobile Device" -Комп'ютерне ім'я localhost
Це те саме, що:
Get-Service -Na 'Apple Mobile Device' -Com localhost
Якщо ви випадково зробите імена параметрів занадто неоднозначними, ви отримаєте помилку.
Останні команди
Нарешті, команди, які ви знаєте і любите, будуть працювати в PowerShell.
пінг www.google.com
Просто пам'ятайте, що успадковані програми, такі як ping, виводять рядок, і часто є кращий спосіб зробити те ж саме, використовуючи командлет PowerShell.
Замість того, щоб виводити довгий рядок тексту, ми тепер залишимо об'єкт, який ми розглянемо у завтрашньому виданні Geek School.