Powershell ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ: Руководство ΠΏΠΎ Windows PowerShell для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… – Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell – ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт PowerShell

Π‘Ρ‹Π²Π°ΡŽΡ‚ случаи ΠΊΠΎΠ³Π΄Π° для выполнСния ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ Π·Π°Π΄Π°Ρ‡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ CSVDE ΠΈ LDIFDE нСдостаточно ΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PowerShell. Если Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π²ΠΎΠ΄Π° большого количСства ΠΊΠΎΠΌΠ°Π½Π΄, ΡƒΠ΄ΠΎΠ±Π½Π΅ΠΉ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот Ρ„Π°ΠΉΠ» ΠΈΠ· PowerShell, Ρ‡Π΅ΠΌ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ всС Π² ΠΎΠ΄Π½Ρƒ строку. Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ скрипт ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² PowerShell?- Π½Π° этот вопрос Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚, Ссли ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт PowerShell Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ тСкстовый Ρ„Π°ΠΉΠ» (txt), Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² Π½Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, послС этого ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π½Π° PS1. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»Π°- ΠΎΠ½ΠΎ Π½Π΅ отобраТаСтся, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ- Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ PowerShell («ΠŸΡƒΡΠΊ- ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹- Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅- Windows Power Shell«) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ со скриптом CD D:/

(Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ скрипт располоТСн Π² ΠΊΠΎΡ€Π½Π΅ диска D), послС этого запускаСм скрипт .\<имя скрипта> Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: .\script.ps1. МоТно Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом,Β  Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт PowerShell- ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ вСсь ΠΏΡƒΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ D:/script.ps1

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ скрипта ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

НС удаСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» <ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ>, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скриптов Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ для Π΄Π°Π½Π½ΠΎΠΉ систСмы. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ «get-help about_signing» для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… свСдСний.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ созданныС собою скрипты, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСртификат Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ссли запустит ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ get-help about_signing, Π»ΠΈΠ±ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… скриптов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Set-ExecutionPolicy remotesigned ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ (Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!!! для выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ PowerShell с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора). ПослС этого ΠΌΠΎΠΆΠ½ΠΎ вновь Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ выполнСния скрипта.

Π― ΠΎΡ‡Π΅Π½ΡŒ надСюсь, моя ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π’Π°ΠΌ! ΠŸΡ€ΠΎΡΡŒΠ±Π° ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ссылкой с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ:


УправляСм слуТбами Windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PowerShell. Π§Π°ΡΡ‚ΡŒ 2 / Netwrix corporate blog / Habr


ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ слуТбами Windows с использованиСм PowerShell. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ постС ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ статус слуТбы Π½Π° локальном ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, произвСсти Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ слуТб (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ остановлСнныС слуТбы) ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ зависимыС слуТбы. Π’ этом постС Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ‚Π°ΠΊΠΈΠ΅ достаточно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ:
  1. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° слуТбы
  2. Запуск слуТбы
  3. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ слуТбы
  4. ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹
  5. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ слуТбами
  6. НастраиваСм Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ слуТбы

ΠœΡ‹ ΡƒΠ΄Π΅Π»ΠΈΠΌ большСС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ€Π°Π·Π±ΠΎΡ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ Π² PowerShell для осущСствлСния Π²Ρ‹ΡˆΠ΅ пСрСчислСнного Π½Π° локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ β€œΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ слуТбами ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…β€ ΠΌΡ‹ рассмотрим, ограничСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² PowerShell v2 ΠΈ v3. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ.

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ:
УправляСм слуТбами Windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PowerShell. Π§Π°ΡΡ‚ΡŒ 1. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ статус слуТб

PS C:\> get-service bits
Status Name DisplayName
------ ---- -----------
Running bits Background Intelligent Transfer Ser...

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π° для получСния статуса слуТбы называСтся Get-Service, Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π°. На Ρ…ΡƒΠ΄ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ† ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ PowerShell ΠΎΠ±ΠΎ всСх ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ относящихся ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ со слуТбами. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ использовали ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –noun для получСния всСх ΠΊΠΎΠΌΠ°Π½Π΄, связанных со слуТбами.

ВзглянСм Π½Π° эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅.

STOP-SERVICE

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ слуТбу, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ Π΅Π΅ имя.
PS C:\> stop-service wuauserv

Однако Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ. НСкоторыС ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Stop-Service, созданы Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. ΠœΡ‹ ΠΆΠ΅ заставим это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, использовав ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€

–Passthru.

PS C:\> stop-service bits -PassThru
Status Name DisplayName
------ ---- -----------
Stopped bits Background Intelligent Transfer Ser...

Если слуТба Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚, Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ Π½Π΅ выдаст Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ошибки. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Stop-Service (СстСствСнно использовав ΠΏΡ€ΠΈ этом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –whatif).

PS C:\> get-service browser | stop-service -WhatIf
What if: Performing operation β€œStop-Service” on Target β€œComputer Browser (browser)”.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –WhatIf Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ посмотрСли, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½. Когда я ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡŽΡΡŒ, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π° слуТба, которая мСня интСрСсуСт, я просто ΡƒΠ΄Π°Π»ΡŽ -Whatif ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽ слуТбу.

PS C:\> get-service browser | stop-service

Как я ΡƒΠΆΠ΅ упомянул Π²Ρ‹ΡˆΠ΅, Ссли слуТба ΡƒΠΆΠ΅ остановлСна, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт. И использованиС

Stop-Service Π² этом случаС Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ Π½Π°Π²Ρ€Π΅Π΄ΠΈΡ‚. Однако я всС ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Ρ†ΠΈΠ²ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

PS C:\> get-service bits | where {$_.status -eq 'running'} | stop-service -pass
Status Name DisplayName
------ ---- -----------
Stopped bits Background Intelligent Transfer Ser...

Если слуТба Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пСрСдаСтся Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΈ отправляСтся Π² Stop-Service. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с остановкой Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слуТб.

PS C:\> get-service bits,wsearch,winrm,spooler | where {$_.status -eq 'running'} | stop-service -whatif
What if: Performing operation "Stop-Service" on Target "Print Spooler (spooler)".
What if: Performing operation "Stop-Service" on Target "Windows Remote Management (WS-Management) (winrm)".
What if: Performing operation "Stop-Service" on Target "Windows Search (wsearch)".

НСкоторыС слуТбы Π½Π΅ захотят ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ – Π² силу наличия зависимых слуТб – Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ Π½ΠΈΠΆΠ΅.

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –Force. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ Π±Π΅Π· β€œΠ·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ дурака”. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ остановит зависимыС слуТбы.

PS C:\> stop-service lanmanserver -force –PassThru
Status Name DisplayName
------ ---- -----------
Stopped Browser Computer Browser
Stopped lanmanserver Server
START-SERVICE

Запуск слуТбы осущСствляСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –Whatif, ΠΈ Π²Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ –Passthru, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

PS C:\> start-service wuauserv -PassThru
Status Name DisplayName
------ ---- -----------
Running wuauserv Windows Update

И снова: Ссли слуТба ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ слуТбу ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠΌΡƒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв являСтся Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ слуТбы. Как ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ настройки слуТбы, я расскаТу Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ слуТбы ΠΈ всС слуТбы, зависимыС ΠΎΡ‚ Π½Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

PS C:\> get-service lanmanserver | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}
Status Name DisplayName
------ ---- -----------
Running lanmanserver Server
Running Browser Computer Browser

ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ явно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ зависимыС слуТбы, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Start-Service Π½Π΅ запустит автоматичСски ΠΈΡ….

RESTART-SERVICE

Π’Ρ‹ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅ΡΡŒ, Π½ΠΎ пСрСзапуск слуТбы Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π΄Π²Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ –Passthru, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ слуТба Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°.

PS C:\> restart-service spooler -PassThru
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ осущСствляСм остановку слуТбы, Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –Force.

ΠŸΠ Π˜ΠžΠ‘Π’ΠΠΠžΠ’ΠšΠ И Π’ΠžΠ—ΠžΠ‘ΠΠžΠ’Π›Π•ΠΠ˜Π• Π ΠΠ‘ΠžΠ’Π«

Π Π°Π±ΠΎΡ‚Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слуТб ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ приостановлСна Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· PowerShell. Однако Ссли слуТба Π½Π΅ удовлСтворяСт трСбованиям, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΈΠ΅ ошибки. (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ слуТбу bits)

Π’ Ρ‡Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°? Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Get-Service).

PS C:\> get-service bits | select *
Name : bits
RequiredServices : {RpcSs, EventSystem}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
DisplayName : Background Intelligent Transfer Service
DependentServices : {}
MachineName : .
ServiceName : bits
ServicesDependedOn : {RpcSs, EventSystem}
ServiceHandle : SafeServiceHandle
Status : Running
ServiceType : Win32ShareProcess
Site :
Container :

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства CanPauseAndContinue Ρ€Π°Π²Π½ΠΎ True, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ слуТбы. НайдСм Ρ‚Π°ΠΊΠΈΠ΅ слуТбы:

PS C:\> get-service | where {$_.CanPauseandContinue}
Status Name DisplayName
------ ---- -----------
Running LanmanServer Server
Running LanmanWorkstation Workstation
Running MSSQLSERVER SQL Server (MSSQLSERVER)
Running O2FLASH O2FLASH
Running stisvc Windows Image Acquisition (WIA)
Running Winmgmt Windows Management Instrumentation

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ слуТб ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ этому Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ.

PS C:\> suspend-service o2flash -PassThru
Status Name DisplayName
------ ---- -----------
Paused O2FLASH o2flash

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ слуТбы? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

PS C:\> resume-service o2flash -PassThru
Status Name DisplayName
------ ---- -----------
Running O2FLASH o2flash

Оба ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ –Whatif.

УДАЛЕННЫЕ Π‘Π›Π£Π–Π‘Π«

Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ дСмонстрировали Π½Π° локальном машинС. И это нСслучайно. К соТалСнию Π΄Π°ΠΆΠ΅ Π² PowerShell v3, Π½ΠΈ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· этих ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΎΠ² Π½Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволял Π±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ слуТбой Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Get-Service, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€

–Computername, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅. Π‘Π»ΡƒΠΆΠ±Ρƒ Π»ΠΈΡ†Π΅Π·Ρ€Π΅Ρ‚ΡŒ Π²Ρ‹ смоТСтС, Π° Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ с Π½Π΅ΠΉ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ получится. НСт, ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с PS v2 ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ PowerShell Remoting. Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Invoke-Command для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ PSSession. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΡ€ΠΎΡ‰Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ слуТбой Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСрвСрах.

PS C:\> Invoke-Command {restart-service dns –passthru} –comp chi-dc03,chi-dc02,chi-dc01

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ слуТбами Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π½Π΅ ограничиваСтся Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹ΠΌ, Π½ΠΎ это ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ рассмотрСния ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… статСй.
ВсС эти ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ это Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ИспользованиС Get-Service для получСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈΡ… Π² подходящий ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚.

Π£Π‘Π’ΠΠΠΠ’Π›Π˜Π’ΠΠ•Πœ УДАЛЕННЫЙ БВАВУБ

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ выяснили, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Stop-Service отсутствуСт Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠ°ΠΊ

–Computername. ΠœΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ сСссии, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρƒ Invoke-Command, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ само ΠΏΠΎ сСбС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ со слуТбой Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…. Одно ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Set-Service.

PS C:\> set-service wuauserv -ComputerName chi-dc03 -Status stopped -WhatIf
What if: Performing operation "Set-Service" on Target "Windows Update (wuauserv)".

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –WhatIf. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ –Passthru для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.

PS C:\> set-service bits -ComputerName chi-dc03 -Status running -PassThru
Status Name DisplayName
------ ---- -----------
Running bits Background Intelligent Transfer Ser...

Π’Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌΠΈ значСниям для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° –Status ΡΠ²Π»ΡΡŽΡ‚ΡΡ β€œΠ·Π°ΠΏΡƒΡ‰Π΅Π½Π°β€ (running), β€œΠΎΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π°β€ (stopped) ΠΈ β€œΠ½Π° паузС” (paused). ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ слуТбы Π΅ΡΡ‚ΡŒ зависимыС слуТбы, ΠΌΡ‹ Π½Π΅ смоТСтС ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΈ продСмонстрировано Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ Π½ΠΈΠΆΠ΅.

К соТалСнию, Ρƒ Set-Service отсутствуСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –Force, поэтому придСтся Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ использованию PowerShell remoting ΠΈ Invoke-Command. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ слуТбу, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

PS C:\> set-service w32time -ComputerName chi-dc03 -Status Stopped -PassThru | set-service -PassThru -Status Running
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ –Passthru, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° Set-Service Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ осущСствит.
Π§Ρ‚ΠΎ ΠΏΠΎ ΠΌΠ½Π΅, Ρ‚Π°ΠΊ я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ сразу с нСсколькими слуТбами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Set-Service, хотя ΠΈΡ… запуск ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ составляСт. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Invoke-Command. Но ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –Computername PowerShell осущСствляСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ RPC ΠΈ DCOM, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с Ρ„Π°ΠΉΡ€Π²ΠΎΠ»ΠΎΠΌ. Invoke-Command ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ PowerShell remoting, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ Π½Π΅ настроили ΠΈΠ»ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ.

Π£Π‘Π’ΠΠΠΠ’Π›Π˜Π’ΠΠ•Πœ ВИП ΠΠ’Π’ΠžΠ—ΠΠŸΠ£Π‘ΠšΠ Π‘Π›Π£Π–Π‘Π«

Set-Service ΠΏΠΎΠ»Π΅Π·Π½Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ слуТбу, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ –StartupType. Если Π’Ρ‹ настроили слуТбу, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ значСния Automatic, Manual or Disabled. К соТалСнию, Π½Π΅ сущСствуСт Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° для Automatic (Delayed).

PS C:\> set-service remoteregistry -StartupType Manual -WhatIf
What if: Performing operation "Set-Service" on Target "Remote Registry (remoteregistry)".
PS C:\> set-service remoteregistry -StartupType Manual -PassThru
Status Name DisplayName
------ ---- -----------
Stopped remoteregistry Remote Registry

Однако, просто взглянув Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΌΡ‹ Π½Π΅ смоТСм ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ½ относится.

PS C:\> get-service remoteregistry | select *
Name : remoteregistry
RequiredServices : {RPCSS}
CanPauseAndContinue : False
CanShutdown : False
CanStop : False
DisplayName : Remote Registry
DependentServices : {}
MachineName : .
ServiceName : remoteregistry
ServicesDependedOn : {RPCSS}
ServiceHandle : SafeServiceHandle
Status : Stopped
ServiceType : Win32ShareProcess
Site :
Container :

Как это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ – ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.
ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ повлияСт Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ статус слуТбы.

PS C:\> set-service remoteregistry -StartupType Disabled -PassThru
Status Name DisplayName
------ ---- -----------
Running remoteregistry Remote Registry

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ) слуТбу, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² подходящий ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚.

PS C:\> set-service remoteregistry -StartupType Disabled -PassThru | Stop-Service -PassThru
Status Name DisplayName
------ ---- -----------
Stopped remoteregistry Remote Registry

ВСхничСски, Set-Service позволяСт Π²Π°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя слуТбы ΠΈ описаниС, Π½ΠΎ Π»ΠΈΡ‡Π½ΠΎ ΠΌΠ½Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Set-Service для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ слуТб. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ слуТбами ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ, Ρ‚ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Invoke-Command.
ВсС, Ρ‡Ρ‚ΠΎ я продСмонстрировал Π² послСдних ΡΡ‚Π°Ρ‚ΡŒΡΡ…, Π±Ρ‹Π»ΠΎ связано с использованиСм спСцифичСских Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² слуТбы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ слуТбами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π²Π°Π½Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ эти ограничСния.

Upd:
Π’ постС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ статСй с ΠΏΠΎΡ€Ρ‚Π°Π»Π° 4sysops.com
Managing Services the PowerShell way – Part 3
Managing Services the PowerShell way – Part 4

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт PowerShell Π² Windows

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт PowerShell Π² Windows-01

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚ сСгодня Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт PowerShell Π² Windows. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π²Ρ‹ написали скрипт ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сильно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π²Π°ΠΌ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ Active Directory, Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ оснастку powershell прописываСтС ΠΏΡƒΡ‚ΡŒ ΠΊ своСму скрипту Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ enter ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

НС удаСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» <ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ>, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скриптов Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ для Π΄Π°Π½Π½ΠΎΠΉ систСмы. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ «get-help about_signing» для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… свСдСний.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ Π΅Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт PowerShell Π² Windows-02

PowerShell ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² исполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΊΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. ВсС это управляСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ рССстра, ΠΆΠΈΠ²ΡƒΡ‰ΠΈΠΌ Π² HKLM. БущСствуСт 4 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ° исполнСния:

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ (Restricted): ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° исполнСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½Π΅ допускаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ скриптов ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ лишь ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄.

ВсС подписанныС (All Signed): ДопускаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ всСх скриптов. ΠŸΡ€Π°Π²Π΄Π°, всС скрипты ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ подписаны ΠΈΠ·Π΄Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ довСряСтС; Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Π΅Ρ‚ вас риску Ρ€Π°Π±ΠΎΡ‚Ρ‹ подписанных (Π½ΠΎ врСдоносных) скриптов, послС получСния подтвСрТдСния довСрия ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŽ.

Π£Π΄Π°Π»Π΅Π½Π½Ρ‹Π΅ подписанныС (Remote Signed): Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ скрипты Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±Π΅Π· подписи. ВсС скачанныС скрипты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ подпись.

НСограничСнный (Unrestricted): ВсС скрипты ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ€ΠΎΠ΄Π΅ Microsoft Outlook, Internet Explorer, Outlook Express ΠΈ Windows Messenger Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ послС подтвСрТдСния, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» исходит ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°; Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ подписи Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ; Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Π΅Ρ‚ вас риску Ρ€Π°Π±ΠΎΡ‚Ρƒ нСподписанных, врСдоносных скриптов.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для PowerShell ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ Β«ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉΒ». Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅, PowerShell Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ лишь ΠΊΠ°ΠΊ интСрактивная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°. Он Π½Π΅ допускаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ скриптов, ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ лишь Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подписаны ΠΈΠ·Π΄Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ довСряСтС.

Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скриптов powershell

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ созданныС собою скрипты, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… скриптов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Set-ExecutionPolicy remotesigned ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ (Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!!! для выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ PowerShell с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора). ПослС этого ΠΌΠΎΠΆΠ½ΠΎ вновь Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ выполнСния скрипта.

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт PowerShell Π² Windows-03

На вопрос ΠΆΠΌΠ΅ΠΌ Y, для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ выполнСния скриптов. ПослС этих манипуляций Π²Ρ‹ смоТСтС Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ваш скрипт.

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» сайта pyatilistnik.org

Как Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° PowerShell ΠΈΠ»ΠΈ нСслоТная автоматизация для управлСния Active Directory

Π˜Π·ΡƒΡ‡ΠΈΡ‚ΡŒ основы PowerShell


Данная ΡΡ‚Π°Ρ‚ΡŒΡ прСдставляСт собой Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΡƒΡ€ΠΎΠΊΠ° ΠΈΠ· нашСго бСсплатного видСокурса PowerShell ΠΈ ΠžΡΠ½ΠΎΠ²Ρ‹ Active Directory (для получСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ доступа ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сСкрСтноС слово Β«blogΒ»).

Π”Π°Π½Π½Ρ‹ΠΉ видСокурс оказался Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ популярным ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ ΠΈ ΠΎΠ½ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ вас ΠΏΠΎ всСм ступСням для создания ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° инструмСнтов ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ слуТбой ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Active Directory начиная с самых Π°Π·ΠΎΠ².

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PowerShell


Π’Π½Π°Ρ‡Π°Π»Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с PowerShell, особСнно Ссли с Π³ΠΎΠ΄Π°ΠΌΠΈ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой cmd.exe ΠΈ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ Β«Π±Π°Ρ‚Π½ΠΈΠΊΠ°ΠΌΠΈΒ» (Ρ„Π°ΠΉΠ»ΠΈ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ .bat ΠΈ .cmd). Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, написанной ΠΏΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌ 2-Π³ΠΎ ΡƒΡ€ΠΎΠΊΠ° нашСго видСокурса, ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ стоит ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с PowerShell, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ основы запуска Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° PowerShell, освоим Π°Π²Ρ‚ΠΎ-Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΊΠ°ΠΊ Π² любой Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Команд


Консоль PowerShell – это интСрактивная срСда, которая позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π—Π΄Π΅ΡΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ спСрва Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ скрипт Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅ ΠΈ лишь Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡŠΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ вашС врСмя.

Если Π²Ρ‹ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, которая ΠΏΡ€ΠΈ этом сущСствуСт Π½Π΅ ΠΎΠ΄ΠΈΠ½ дСнь, Ρ‚ΠΎ Ρƒ вас ΡƒΠΆΠ΅ навСрняка Π΅ΡΡ‚ΡŒ нСсколько ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… скриптов Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ запускаСтС ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки cmd.exe. И это отличная Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ! Π—Π½Π°Ρ‡ΠΈΡ‚ Π²Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ смоТСтС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС это ΠΈ ΠΈΠ· PowerShell. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ поистинС ΠΌΡƒΠ΄Ρ€ΠΎΠ΅ дизайнСрскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ со стороны Microsoft, Ρ‚Π°ΠΊ ΠΎΠ½ΠΈ сдСлали ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΌ для администораторов.

По Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ PowerShell выглядит ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки cmd.exe. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ ΠΈ Π½Π°Π²Ρ‹ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΡƒΠΆΠ΅ Π²Π»Π°Π΄Π΅Π΅Ρ‚Π΅, Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π² PowerShell. А Ссли Π²Ρ‹ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ свою ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ ΠΎΡ‚ выполнСния ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΊ Ρ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ администрированиС, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠ° Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ PowerShell, Π° Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку являСтся ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ способом для Π½Π°Ρ‡Π°Π»Π°.

ВсС ваши часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ping, ipconfig, nslookup, ΠΈ Ρ‚. ΠΏ. Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅.

Как Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ PowerShell


Π›ΡŽΠ΄ΠΈ Π»ΡŽΠ±ΡΡ‚ PowerShell, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ, Π½Ρƒ, ΠΌΠΎΡ‰Π½ΠΎ! Но эта сила исходит ΠΎΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠ³ΠΎ количСства встроСнных возмоТностСй. Π­Ρ‚ΠΎ просто Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π° Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ ΠΈ Π½Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠ» всСвозмоТныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρ‹, Ρ„Π»Π°Π³ΠΈ, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы ΡΠΊΠ°Π·Π°Ρ‚ΡŒ PowerShell Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, прямо Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ встроСно нСсколько инструмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим.

Авто-Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Tab

НСт нСобходимости Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ написаниС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НабСритС

get-c

Π’Π΅ΠΏΠ΅Ρ€ΡŒ наТимая Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Tab – Π²Ρ‹ смоТСтС ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС доступныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Ρ‚Π΅Ρ… символов, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ Π²Π²Π΅Π»ΠΈ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² любой части Ρ‚Π΅Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ: Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΈ Ρ„Π»Π°Π³Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

Команда Get-Command

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ Tab Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ прСвосходно, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π’Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ имя ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, которая Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π°? Π’ этом случаС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ доступныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: Get-Command.

Π’ поискС ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ синтаксис для Π½ΠΈΡ…: Π“Π»Π°Π³ΠΎΠ»-Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π“Π»Π°Π³ΠΎΠ»Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ – Get (ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ), Set (Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ), Add (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ), Clear (ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ), Read (Π§ΠΈΡ‚Π°Ρ‚ΡŒ) ΠΈ Write (ΠŸΠΈΡΠ°Ρ‚ΡŒ) ΠΈ Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ – Ρ„Π°ΠΉΠ»Ρ‹, сСрвСры ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сущности Π² вашСй сСти ΠΈ прилоТСниях.

Get-Command – это инструмСнт для поиска ΠΈ изучСния ΠΊΠΎΠΌΠ°Π½Π΄, доступных Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄ Π² PowerShell


ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ описал язык скриптов Perl, ΠΊΠ°ΠΊ β€œΡˆΡƒΠΌ ΠΈΠ· исполняСмых строк кода” (ΠΎΡ€ΠΈΠ³. β€œexecutable line noise”) – нСвСроятно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ инструмСнт, с Π΄ΠΈΠΊΠΎ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ синтаксисом ΠΈ соотвСтствСнно с высоким ΠΏΠΎΡ€ΠΎΠ³ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π° для Π΅Π³ΠΎ изучСния.

Π₯отя Ссли Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎ ΠΈ традиционная командная строка Π² Windows Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ этого ΡƒΡˆΠ»Π°. Рассмотрим ΠΎΠ±Ρ‰ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с β€˜foo’.

CMD: FOR /D /R %G IN (β€œFoo*”) DO @ECHO %G

FOR ΠΈ DO ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Ρ†ΠΈΠΊΠ».
Π€Π»Π°Π³ /D ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это Ρ†ΠΈΠΊΠ» ΠΏΠΎ всСм ΠΏΠ°ΠΏΠΊΠ°ΠΌ
Π€Π»Π°Π³ /R ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ
Π¨Π°Π±Π»ΠΎΠ½ поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ нас Π½Π°Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ², обозначаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ β€œIN”
ECHO ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сцСнарий Π΄ΠΎΠ»ΠΆΠ΅Π½ вывСсти Π½Π° экран Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†,
%G – это β€œΠ²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ парамСтр” ΠΈ Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½Π΅Π΅ программисты Microsoft ΡƒΠΆΠ΅ использовали ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΡƒΠΊΠ²Ρ‹ A, D, F, N, P, S, T, ΠΈ X. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с G, являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ, Ρ‚.ΠΊ. это Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ самый большой Π½Π°Π±ΠΎΡ€ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠΊΠ² для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (G, H, I, J, K, L, M) – Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, это Π»Π°ΠΉΡ„Ρ…Π°ΠΊ.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ эквивалСнт Π½Π° PowerShell:

PowerShell: Get-ChildItem -Path C:\ -Filter β€˜Foo*’

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ – Ρ‚ΠΎΡ‚ ΠΆΠ΅, Π½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π° Ρ‚Π°ΠΊΠΎΠΌ достаточно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит. Π‘Ρ€Π°Π·Ρƒ становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Ну Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ подстановочный Π·Π½Π°ΠΊ β€˜*’ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΎΠ±ΠΎΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, Π½ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈ Ρ‚Π°ΠΊ прСкрасно Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ – Ρ‡Ρ‚ΠΎ всС элСмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с β€˜Foo’ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ Π΅Ρ‰Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ.

ЧувствуСтС ΠΊΠ°ΠΊ вашС настроСниС постСпСнно ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ΡΡ? А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Ρ‹ (Π° Π½Π΅ ΠΏΠ°ΠΏΠΊΠΈ) Π² ΠΏΡƒΡ‚ΠΈ? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² ΠΌΠ°Π½ΡƒΠ°Π»Π°Ρ…, ΠΈΠ»ΠΈ ваш Π»ΡƒΡ‡ΡˆΠΈΠΉ Π΄Ρ€ΡƒΠ³ Google Π²Π°ΠΌ Π² ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки? МалСнькая подсказка: Ссли Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² PowerShell, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ β€œ-” ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Tab, ΠΏΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΌ Ρ„Π»Π°Π³Π°ΠΌ, ΠΏΠΎΠΊΠ° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ появится.

Одна Длинная Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π°


Π‘Π°ΠΉΡ‚Ρ‹ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, Ссли ΠΎΠ½ΠΈ Π½Π΅ Π² ΠΎΠ½Π»Π°ΠΉΠ½Π΅. ИмСнно поэтому люди тратят ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΡ€ΠΈΡ‚Π²ΠΎΡ€ΡΡΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сонара Π½Π° ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΠΎΠΉ Π»ΠΎΠ΄ΠΊΠ΅ ΠΈ Β«ΠΏΠΈΠ½Π³ΡƒΡŽΡ‚Β» Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ своих сСрвСров (Π΄Π°-Π΄Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому ΠΎΠ½ Ρ‚Π°ΠΊ называСтся).

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ping ΠΏΠΎΠ»Π΅Π·Π΅Π½ (ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ping с Ρ‚Π΅ΠΌ ΠΆΠ΅ успСхом ΠΈ Π² консоли PowerShell), Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² это просто большая ΠΈ длинная строка – ряд Π±ΡƒΠΊΠ² ΠΈ Ρ†ΠΈΡ„Ρ€ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π’ PowerShell Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ping, Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² структурированном Π²ΠΈΠ΄Π΅. Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Test-Connection.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎ ΠΎΠ±ΠΌΠ΅Π½Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ с сСрвСром β€˜DC’ Π² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ структурированном Π²ΠΈΠ΄Π΅:

НС говоря ΡƒΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° Π²Ρ…ΠΎΠ΄ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ Π΅ΠΉ Π΅Ρ‰Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ (наш ΠΏΠΎΠ»Π½Ρ‹ΠΉ видСокурс для этого ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½) ΠΈΠ»ΠΈ просто Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅ΠΉ появилось большС смысла.

ВстроСнная ΠΏΠΎΠΌΠΎΡ‰ΡŒ


Π”ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Π±Ρ‹Π»ΠΈ сосрСдоточСны Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ Tab, Π½ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с PowerShell всС большС ΠΈ большС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ становятся всС Π±ΠΎΠ»Π΅Π΅ слоТными c Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ слоТными ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ синтаксис Π“Π»Π°Π³ΠΎΠ»-Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ (Verb-Noun) ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, Π½ΠΎ Π΅Ρ‰Π΅ большС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ:

1. ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ
2. ОбилиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²

ΠŸΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠΎ ΠšΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π°ΠΌ


На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, слСдуСт ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Get-Command (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Get-Help Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ: допустим, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, всС Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ слуТбы Windows Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

Для Π½Π°Ρ‡Π°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для взаимодСйствия со слуТбами:

Get-Command service

ΠšΠΎΡ‚ΠΎΡ€Π°Ρ сообщит Π²Π°ΠΌ сразу, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ. ΠžΠ±Π΄ΡƒΠΌΡ‹Π²Π°Ρ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² стандартный синтаксис ΠΊΠΎΠΌΠ°Π½Π΄ PowerShell Π“Π»Π°Π³ΠΎΠ»-Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π²Ρ‹ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ β€˜Get-Service’.

ДокумСнтация Microsoft ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Get-Service
Для этого стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ β€˜Get-Help’. НачнитС ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ
β€œGet-Help -” ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Tab
Π’Ρ‹ быстро ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ доступныС ΠΎΠΏΡ†ΠΈΠΈ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ явно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ β€œName”, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ стоит ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ:

Get-Help -Name Get-Service

Π’ΡƒΡ‚ ΠΆΠ΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ синтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΈ Ρ‡Ρ‚ΠΎ ΠΈΠ· ΠΎΠΏΡ†ΠΈΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π° Π±Π°Π·Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²).

Если Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚ΠΎ Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅:

Get-Help -Name Get-Service - Parameter Name

ΠŸΠΎΠΌΠΎΡ‰ΡŒ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° PowerShell


ВсС ΠΌΡ‹ люди ΠΈ, Π±Π΅Π· ΠΎΠ±ΠΈΠ΄ Π±ΠΎΡ‚ Google, Ρƒ нас всСх ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ свои психологичСскиС ΠΏΡ€Π΅ΠΏΠΎΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΡ€Π΅Π΄ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ ΠΈ привСсти это ΠΊ понятной Π½Π°ΠΌ Ρ„ΠΎΡ€ΠΌΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ.

ВвСдя β€œ-examples” ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ² Ρ„Π»Π°Π³ β€œ-detail” ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ β€œGet-Help”, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ прСдоставлСн Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² для использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.
Π’ΠΎΡ‚, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π²Ρ‹Π²ΠΎΠ΄ для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Get-Help -Name Get-Service -Examples

ΠžΡΡ‚Π°Π²Π°ΡΡΡŒ Π² курсС


Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ уТасным, Ρ‡Π΅ΠΌ Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ошибкой Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Часто это Π±Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈΠ±ΠΎ ΠΈΠ·-Π·Π° ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π»ΠΈΠ±ΠΎ ΠΈΠ·-Π·Π° Π½Π΅Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΠ·-Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ исправлСния Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

update-help

ΠΈ начнСтся процСсс Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ контСкстной ΠΏΠΎΠΌΠΎΡ‰ΠΈ.

Запуск PowerShell ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Π‘Π˜Π‘Π’Π•ΠœΠ (NT AUTHORITY\SYSTEM)

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь! Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΠΈ гости ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Π΅ΠΉΡˆΠΈΡ… Π±Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎ систСмному Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Pyatilistnik.org. Π’ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π· ΠΌΡ‹ с Π²Π°ΠΌΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Β Restart-Computer ΠΈ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ сСрвСра, это ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Π½Π°Π²Ρ‹ΠΊ. Π’ сСгодняшнСй ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» вас Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ PowerShell с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ систСмной ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи «Π‘Π˜Π‘Π’Π•ΠœΠ (NT AUTHORITY\SYSTEM)» ΠΈΠ»ΠΈ Π΅Π΅ Π΅Ρ‰Π΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚Β Local System. Π­Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ скил, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вас ΠΌΠΎΠΆΠ΅Ρ‚ сильно Π²Ρ‹Ρ€ΡƒΡ‡ΠΈΡ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚ слов ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с PowerShell ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ SYSTEM

Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ· сСбя прСдставляСт локальная, систСмная учСтная запись, напомню лишь, Ρ‡Ρ‚ΠΎ ΠΈΠ· ΠΏΠΎΠ΄ Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ количСство сСрвисов Windows ΠΈ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²Π° Π½Π° всС Π² вашСй ОБ (Папки, Ρ„Π°ΠΉΠ»Ρ‹, кусты рССстра, Ρ‚ΠΎΠΌΠ°). ИмСя Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ PowerShell ΠΎΡ‚ систСмной ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС Π² этой систСмС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ слуТбы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Ρ‡ΡƒΠΆΠΎΠΉ RDP сСссии, ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ рССстра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ Π² случаС с ошибкой 10016.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ запуска PowerShell ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ систСмной ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи

Π― ΠΌΠΎΠ³Ρƒ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ряд ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π• ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ Π·Π°Π΄Π°Ρ‡Ρƒ, сразу Ρ…ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ спокойно ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΡ€Π°Π² Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ SYSTEM.

  1. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ использованиС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ PSexec
  2. Π§Π΅Ρ€Π΅Π· ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ событий
  3. Π§Π΅Ρ€Π΅Π· скрипт choco

Запуск PowerShell ΠΎΡ‚ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи NT AUTHORITY\SYSTEM ΠΈΠ· PSexec

PSexec — это ΠΎΠ΄Π½Π° ΠΈΠ· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ Π»Π΅Π³Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° SysInternals ΠœΠ°Ρ€ΠΊΠ° Руссиновича. Π― Π΅Π΅ ΡƒΠΆΠ΅ использовал ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ CMD ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ систСмы, Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅. ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ PSexec Π»ΠΈΠ±ΠΎ Ρƒ мСня, Π»ΠΈΠ±ΠΎ ΠΏΠΎ ссылкС Π½ΠΈΠΆΠ΅:

https://download.sysinternals.com/files/PSTools.zip

Π”Π°Π»Π΅Π΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ваш Π°Ρ€Ρ…ΠΈΠ² ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ, Π΄Π°Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ. Π£ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° запуска PSexec, ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΠ· свой PowerShell. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠžΠ‘Π―Π—ΠΠ’Π•Π›Π¬ΠΠž ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора, Π΄Π°Π»Π΅Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² cmd Π² располоТСниС с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ PSexec. ДСлаСтся это ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

cd ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ вашСй ΠΏΠ°ΠΏΠΊΠΈ с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ PsExec.exe
Мой ΠΏΡ€ΠΈΠΌΠ΅Ρ€: cd C:\Дистрибутивы\PSTools

ПослС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, которая запустит ΠΎΠΊΠ½ΠΎ PowerShell ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ систСмы:

psexec.exe -i -s powershell.exe ΠΈΠ»ΠΈ psexec64.exe -i -s powershell.exe

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρƒ вас откроСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ PowerShell Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ администратора ΠΈ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ «nt authority\систСма«. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, это ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ whoami.

Π’ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ ΠΈΠ· самой PowerShell(), Ρ‚ΡƒΡ‚ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ PowerShell ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора и ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

./psexec.exe -i -s powershell.exe

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ PowerShell Ρ‡Π΅Ρ€Π΅Π· PSexec, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:

.\PsExec.exe -s \\svt2019s01 powershell.exe

Π“Π΄Π΅ svt2019s01, это имя ΠΌΠΎΠ΅Π³ΠΎ сСрвСра с Windows Server 2019. Как Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π³Π΄Π΅ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ запускаСтся слуТба PSexec, Π²Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΏΡ€Π°Π²Π° локального администратора Ρ‚Π°ΠΌ. Если ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚, Ρ‚ΠΎ Ρƒ вас блокируСтся брандмауэром, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Ρ‚ WinRM (TCP 5985) Ρƒ вас Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½.

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ hostname, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ Π²Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈΡΡŒ, Π½Ρƒ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ whoami, ΠΈΠ· ΠΏΠΎΠ΄ ΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡƒΡ‰Π΅Π½ PowerShell, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π°, это учСтная запись nt authority\систСма.

Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ· ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Start-Process -FilePath cmd.exe -Verb Runas -ArgumentList ‘/k C:\PSTools\PsExec.exe -i -s powershell.exe’

Она Ρ‚Π°ΠΊ ΠΆΠ΅ всС запустит, СдинствСнноС помСняйтС Π² Π½Π΅ΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ PSexec Π½Π° свой.

Запуск PowerShell ΠΎΡ‚ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи NT AUTHORITY\SYSTEM ΠΈΠ· ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π·Π°Π΄Π°Π½ΠΈΠΉ

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΎΡ‰Ρ€Π΅Π½Π½Ρ‹ΠΉ Π½Π΅ΠΆΠ΅Π»ΠΈ использованиС внСшнСй ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ PSexec, Π½ΠΎ я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ. Π’ ΠΎΠΊΠ½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ taskschd.msc.

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ Ρ‰Π΅Π»ΠΊΠ°Π΅ΠΌ ΠΏΠΎ Π½Π΅ΠΌΡƒ ΠΏΡ€Π°Π²Ρ‹ΠΌ ΠΊΠ»ΠΈΠΊΠΎΠΌ, ΠΈΠ· контСкстного мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ «Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ«

Π—Π°Π΄Π°Π΅ΠΌ Π΅Π΅ имя Ρƒ мСня ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ «Π—апуск PowerShell NT».

Π’ настройках Ρ‚Ρ€ΠΈΠ³Π΅Ρ€Π° выставим запуск Π·Π°Π΄Π°Ρ‡ΠΈ «ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ«.

Π—Π°Π΄Π°Π΅ΠΌ врСмя запуска.

ΠžΡΡ‚Π°Π²Π»ΡΠ΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ «Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ» ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π΄Π°Π»Π΅Π΅.

Π’ΡƒΡ‚ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΏΡƒΠ½ΠΊΡ‚Π°:

  1. ПолС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ сцСнария
  2. АргумСнт

Π’ ΠΏΠΎΠ»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ строку Π² зависимости ΠΎΡ‚ разрядности вашСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹:

  • x86 : %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
  • x64 : %SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe

Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ нашСго скрипта, располоТСнного ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ C:\Scripts\Get-CurrentUser.ps1

–NoProfile –ExecutionPolicy Bypass –File C:\Demo\Get-CurrentUser.ps1

ExecutionPolicy, это ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ подписанныС скрипты.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Get-CurrentUser.ps1

[PSCustomObject]@{
‘env:USERNAME’ = $env:USERNAME
‘whoami’ = whoami.exe
‘GetCurrent’ = [Security.Principal.WindowsIdentity]::GetCurrent().Name
} | Format-List | Out-File -FilePath C:\Scripts\whoami.txt

Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ созданиС простого задания, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ выставитС Π³Π°Π»ΠΊΡƒ «ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ «Π‘войств» для этой Π·Π°Π΄Π°Ρ‡ΠΈ послС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π“ΠΎΡ‚ΠΎΠ²ΠΎ«.

Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ созданиС простого задания, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ выставитС Π³Π°Π»ΠΊΡƒ «ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ «Π‘войств» для этой Π·Π°Π΄Π°Ρ‡ΠΈ послС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π“ΠΎΡ‚ΠΎΠ²ΠΎ». Π”Π°Π»Π΅Π΅ Ρƒ вас откроСтся ΠΎΠΊΠ½ΠΎ свойств Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ выполняСтся ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΡ‚ΠΎ Π΅Π΅ создал, Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, это ROOT\Администратор, это Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Если Ρƒ вас русская Windows, Ρ‚ΠΎ Π² ΠΎΠΊΠ½Π΅ поиска Π²Π²Π΅Π΄ΠΈΡ‚Π΅ «Π‘Π˜Π‘Π’Π•ΠœΠ», Ссли английская вСрсия, Ρ‚ΠΎ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ SYSTEM.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° запускаСтся ΠΎΡ‚ систСмной ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи (nt authority\систСма).

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ссли всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚ΠΎ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ скрипт Get-CurrentUser.ps1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅ Π² Ρ„Π°ΠΉΠ» whoami записал ΠΈΠ· ΠΏΠΎΠ΄ ΠΊΠΎΠ³ΠΎ ΠΎΠ½ выполнился, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, это nt authority\систСма (GetCurrent:NT AUTHORITY\Π‘Π˜Π‘Π’Π•ΠœΠ). Π’Π°ΠΊΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ скрипты ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ систСмной ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи.

НадСюсь, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. На этом Ρƒ мСня всС, с Π²Π°ΠΌΠΈ Π±Ρ‹Π» Иван Π‘Π΅ΠΌΠΈΠ½, Π°Π²Ρ‚ΠΎΡ€ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ IT ΠΏΠΎΡ€Ρ‚Π°Π»Π° Pyatilistnik.org.

Запуск PowerShell скриптов ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ

Π’ Π·Π°Π΄Π°Ρ‡ΠΈ практичСски любого систСмного администратора Π²Ρ…ΠΎΠ΄ΠΈΡ‚ написаниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… скриптов ΠΈ ΠΈΡ… запуск. Π—Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запуск скрипта ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Task Sheduler β€” Π·Π°Π΄Π°Ρ‡Π° нСслоТная, Π½ΠΎ ΠΏΡ€ΠΈ использовании PowerShell Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я расскаТу Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ мСня Π΅ΡΡ‚ΡŒ скрипт start.ps1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ 10 Π΄Π½Π΅ΠΉ. Π•ΡΡ‚ΡŒ Π΄Π²Π° способа Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ.

Бпособ 1

Для запуска скрипта Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ оснасткой Task Scheduler, ΠΎΠ½ ΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π·Π°Π΄Π°Π½ΠΈΠΉ. Найти Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Administrative Tools, Π»ΠΈΠ±ΠΎΒ Π½Π°ΠΆΠ°Π² Win+RΒ ΠΈ ввСдя команду taskschd.msc. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈΒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Actions Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ Create Task.

создаСм Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² Task Scheduler

Β 

На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ General ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ имя и описаниС задания, Π° Ρ‚Π°ΠΊΠΆΠ΅ (ΠΏΠΎ нСобходимости) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² систСмС,Β Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠΏΡ†ΠΈΡŽ Β«Run whether user is logged on or notΒ». Если для выполнСния задания трСбуСтся ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ,Β Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅ΠΌ ΠΎΠΏΡ†ΠΈΡŽ Β«Run with highest privilegesΒ».

Π½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, Π²ΠΊΠ»Π°Π΄ΠΊΠ° General

Β 

Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅ΠΌ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Triggers ΠΈ создаСм Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ расписаниС запуска нашСго задания. Π’ ΠΏΠΎΠ»Π΅ Start ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя запуска, Π° Π² ΠΏΠΎΠ»Π΅ Expire β€” Π΄Π°Ρ‚Ρƒ ΠΈ врСмя Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ задания. Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ (Daily) ΠΈ Π·Π°Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π° (Recur every) 1 дСнь.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Ρ€Π°Π· Π² дСнь, Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (One time), Π° Π²Β Ρ€Π°Π·Π΄Π΅Π»Π΅ Advanced settings ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ Repeat task every ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя повторСния, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 5 ΠΌΠΈΠ½ΡƒΡ‚, максимум 1 час. Если этого нСдостаточно, Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΏΠΎΠ»Π΅ Delay task for up to ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ.

Π·Π°Π΄Π°Π΅ΠΌ условиС для запуска задания

Β 

И основноС. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Action ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ дСйствиС для Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ задания. Напомню, Ρ‡Ρ‚ΠΎ Π² цСлях бСзопасности PowerShell скрипты ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ сначала Π½Π°Π΄ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ PowerShellΒ ΠΈ ΡƒΠΆΠ΅ Π² Π½Π΅ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ скрипту. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΏΠΎΠ»Π΅ Β«ActionΒ» ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ запуск powershell.exe, Π° Π² ΠΏΠΎΠ»Π΅ Β«Add ArgumentsΒ» ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -File ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ скрипту, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

-File β€³C:\Scripts\start.ps1β€³

Π’Π°ΠΊΠΆΠ΅Β Π² ΠΏΠΎΠ»Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ:

-Command β€” выполняСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для запуска скрипта, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: -Command β€³& {C:\Scripts\start.ps1}β€³.Β ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² скрипт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: -Command β€³& {C:\Scripts\start.ps1 -a 1 -b 3}β€³;
-ExecutionPolicy β€” Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ выполнСния скриптов для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСанса, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ Unrestricted, RemoteSigned, AllSigned ΠΈ Restricted. Заданная ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ сСансС ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ€Π°Π½Π΅Π΅ созданными ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°ΠΌΠΈ;
-NonInteractive β€” ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… запросов ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ;
-WindowStyle Hidden β€” запуск ΠΎΠΊΠ½Π° PowerShell Π² скрытом Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;
-NoProfile β€” ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ профиля, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ нСсколько ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта;
-NoExit β€” ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ послС ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ скрипта. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ скрипта.

ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ дСйствиС для Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ задания

Β 

Π—Π°ΠΏΠΎΠ»Π½ΠΈΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ поля ΠΆΠΌΠ΅ΠΌ ОК ΠΈ сохраняСм Π·Π°Π΄Π°Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ скрипт Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ врСмя Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ 10 Π΄Π½Π΅ΠΉ.

Бпособ 2

Π’ PowerShell 3.0 появился Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Sheduled Job, Π΄Π°ΡŽΡ‰ΠΈΠΉΒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΒ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ задания прямо ΠΈΠ· консоли, Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ оснасткой ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΈΠΌ для ΠΏΠ»Π°Π½ΠΎΠ²ΠΎΠ³ΠΎ запуска нашСго скрипта.

Π‘Π½Π°Ρ‡Π°Π»Π° создаСм расписаниС запуска (Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² полпятого Π²Π΅Ρ‡Π΅Ρ€Π°, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ 10 Π΄Π½Π΅ΠΉ):

$t = New-JobTrigger -Daily -At 4:30PM -DaysInterval 10

Π—Π°Ρ‚Π΅ΠΌ сохраняСм Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

$cred = Get-Credential contoso\administrator

Π’ качСствС ΠΎΠΏΡ†ΠΈΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ запуск задания с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ привилСгиями:

$o = New-ScheduledJobOption -RunElevated

И рСгистрируСм Π·Π°Π΄Π°Π½ΠΈΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Start:

Register-ScheduledJob -Name Start -FilePath C:\Scripts\start.ps1 -Trigger $t -Credential $cred -ScheduledJobOption $o

созданиС Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ задания Π² PowerShell

Β 

Π§Ρ‚ΠΎΠ±Ρ‹ убСдится Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ создано, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈ Π½Π°ΠΉΡ‚ΠΈ нашС Π·Π°Π΄Π°Π½ΠΈΠ΅Β Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Microsoft\Windows\PowerShell\SheduledJobs.

Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² Task Sheduler

Β 

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅.Β  Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ задания PowerShell Π²Β Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ %systemdrive%\Users\%username%\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs создаСтся одноимСнная ΠΏΠ°ΠΏΠΊΠ°. Π’ этой ΠΏΠ°ΠΏΠΊΠ΅ находится само Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² XML-Ρ„Π°ΠΉΠ»Π΅ ΠΈ ΠΏΠ°ΠΏΠΊΠ° Output, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°Ρ… ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, хранится история выполнСния задания β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния (Ρ„Π°ΠΉΠ»s Result.xml)Β ΠΈ статус задания (Status.xml). Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹Β ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡΒ Π΄Π»Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ диагностики Π² Ρ‚ΠΎΠΌ случаС, Ссли Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π΅ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Execution Policy

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ напомню ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΎΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ выполнСния скриптов Execution Policy. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Get-ExecutionPolicy. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ значСния:

β€’ Restricted — блокируСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΡŽΠ±Ρ‹Ρ… скриптов. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;
β€’ AllSigned β€” Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скриптов, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ подпись;
β€’ RemoteSigned β€” скрипты, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, скрипты, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° β€” Β Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи;
β€’ Unrestricted β€” Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΡŽΠ±Ρ‹Ρ… скриптов. ΠŸΡ€ΠΈ запускС нСподписанного скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅;
β€’ Bypass β€” Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ блокируСтся, Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ прСдупрСТдСния ΠΈ запросы Π½Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для Π±Π΅Π·ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ выполнСния скриптов достаточно Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ RemoteSigned. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Set-ExecutionPolicy, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Set-ExecutionPolicyΒ RemoteSigned -force

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Если указанная Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° выполнСния ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ Π³Ρ€ΡƒΠΏΠΏΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅, Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π² рССстр, Π½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π Π°Π±ΠΎΡ‚Π° с исполняСмыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell | Windows IT Pro/RE

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Windows PowerShell построСна с использованиСм ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (CLI). Одна ΠΈΠ· основных Π·Π°Π΄Π°Ρ‡ интСрфСйса CLI – ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Однако я Π½Π΅ Ρ€Π°Π· сталкивался с Ρ‚Π°ΠΊΠΈΠΌΠΈ вопросами ΠΊΠ°ΠΊ: «НСобходимо Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell. Π― Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ пытался Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Как Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell?Β»

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π° с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ расстановкой ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Cmd.exe Π½Π΅ прСдставляСт трудности, вСдь процСсс Cmd.exe Π½Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ синтаксичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. Если Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ сцСнарий для ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Cmd.exe (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»), запускаСмый ΠΊΠ°ΠΊ исполняСмый Ρ„Π°ΠΉΠ», Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ командная строка исполняСмого Ρ„Π°ΠΉΠ»Π°, просто Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ этой ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС прСфикс Echo, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Cmd.exe ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ строку, Π° вывСсти Π΅Π΅ Π½Π° экран. Π­Ρ‚ΠΎ простая ΠΈ эффСктивная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Однако Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ услоТняСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки здСсь слоТнСС, Ρ‡Π΅ΠΌ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Cmd.exe. Команда Echo Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell Π½Π° самом Π΄Π΅Π»Π΅ являСтся псСвдонимом ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Write-Host, поэтому Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell для просмотра ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΊΠ°ΠΊ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Cmd.exe. Π’ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell отсутствуСт встроСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ просмотра ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для исполняСмого Ρ„Π°ΠΉΠ»Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, я написал ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ShowArgs.exe. ЦСль этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” вывСсти Π½Π° экран ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π±Π΅Π· Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π—Π°ΠΌΠ΅Π½ΠΈΠ² ShowArgs.exe ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ (Π½ΠΎ сохраняя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), Π²Ρ‹ смоТСтС ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ShowArgs.exe (доступно для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° нашСм сайтС), я ΠΏΠΎΠΊΠ°ΠΆΡƒ, ΠΊΠ°ΠΊ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнными ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° Β«ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈΒ» ΠΏΡ€ΠΈ запускС исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, я создал ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ C:\Sample Tools ΠΈ скопировал Ρ„Π°ΠΉΠ» ShowArgs.exe Π² Π½Π΅Π³ΠΎ.

Запуск исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell

Для запуска исполняСмого Ρ„Π°ΠΉΠ»Π° Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell достаточно просто ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ имя. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Cmd.exe. На экранС 1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° запуска прилоТСния ShowArgs.exe Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell. На экранС 1 для запуска прилоТСния ShowArgs.exe трСбуСтся прСфикс Β«.\Β», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ запускаСт исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

Β 

Запуск исполняСмого Ρ„Π°ΠΉΠ»Π° Π² PowerShell
Π­ΠΊΡ€Π°Π½ 1. Запуск исполняСмого Ρ„Π°ΠΉΠ»Π° Π² PowerShell

Если имя исполняСмого Ρ„Π°ΠΉΠ»Π°, ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Π½Π΅ содСрТат ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π·ΠΎΠ²Π° (&) Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ (см. экран 2). Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях ΠΎΠ½ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ.

Β 

ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Π·ΠΎΠ²Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ
Π­ΠΊΡ€Π°Π½ 2. ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Π·ΠΎΠ²Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ

Однако Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ & для Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. На экранС 3 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° эта распространСнная ошибка. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° экранС 3 Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ошибкой, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ строка, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Π·ΠΎΠ²Π° Π½Π΅ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° (ΠΎ Ρ‡Π΅ΠΌ ΠΈ сообщаСт систСма). Вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° экранС 3 исправляСт эту ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’ этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ помСщаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя исполняСмого Ρ„Π°ΠΉΠ»Π°, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ выносятся Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Β 

ΠžΠ±Ρ‰ΠΈΠ΅ ошибки ΠΏΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Π·ΠΎΠ²Π°
Π­ΠΊΡ€Π°Π½ 3. ΠžΠ±Ρ‰ΠΈΠ΅ ошибки ΠΏΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Π·ΠΎΠ²Π°

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° экранС 4, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния исполняСмого Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° экранС запускаСт Ρ„Π°ΠΉΠ» Find.exe с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Β«/?Β» ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $findHelp. Вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная содСрТит массив, Π° послСдняя Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран содСрТимоС массива. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ строку, пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ строку, Π° Π½Π΅ массив.

Β 

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния исполняСмого Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
Π­ΠΊΡ€Π°Π½ 4. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния исполняСмого Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

Командная строка исполняСмого Ρ„Π°ΠΉΠ»Π°: Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π‘Π°ΠΌΠΈ ΠΏΠΎ сСбС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π°, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ содСрТат ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π½ΠΎ Π² Ρ‚Π°ΠΊΠΈΡ… случаях использованиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструкции ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ShowArgs.exe с ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ 1. Π’ случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ нСпосрСдствСнно Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. НапримСр:

. \ShowArgs Β«Gil BatesΒ»

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ оТидаСтся. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell Π²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ строка, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, содСрТит ΠΏΡ€ΠΎΠ±Π΅Π», ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΅Π΅ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° исполняСмому Ρ„Π°ΠΉΠ»Ρƒ. Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΊ строкС Π½Π΅ трСбуСтся. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²:

. \ShowArgs «`"Gil Bates`»«
. \ShowArgs 'Β»Gil BatesΒ«'
. \ShowArgs»«"Gil Bates»«"

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell ΡƒΠ΄Π°Π»ΠΈΡ‚ лишниС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π±Ρ‹Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π½Π°Π±ΠΎΡ€ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. А Π·Π½Π°Ρ‡ΠΈΡ‚, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° лишь Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡ‚ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², использованиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ 2. Если Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° исполняСмого Ρ„Π°ΠΉΠ»Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

$name =Β»Gil BatesΒ«
. \ShowArgs $name

Если содСрТимоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell автоматичСски Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Как ΠΈ Π² случаС с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, Π½Π΅Ρ‚ нСобходимости Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ 3. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, связанный с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ слитно, Π±Π΅Π· раздСлСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, вмСстС с Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, поясню, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ указываСтся послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ управляСт Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ лишь Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ эквивалСнтны Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ:

. \ShowArgs /nameΒ»Gil BatesΒ«
. \ShowArgsΒ»/nameGil BatesΒ«

Аналогичная ситуация Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ находится Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ (:) ΠΈΠ»ΠΈ Π·Π½Π°ΠΊ равСнства (=). Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ эквивалСнтны:

. \ShowArgs /name:Β»Gil BatesΒ«
. \ShowArgsΒ»/name:Gil BatesΒ«

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ эквивалСнтны:

. \ShowArgs /name=Β»Gil BatesΒ«
. \ShowArgsΒ»/name=Gil BatesΒ«

Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ 4. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π½Π΅ трСбуСтся Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π΄Π°ΠΆΠ΅ Ссли содСрТимоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. НапримСр, всС пСрСчислСнныС Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ:

. \ShowArgs /name $name
. \ShowArgs /name$name
. \ShowArgs /name=$name
. \ShowArgs /name:$name

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ 5. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ начинаСтся с дСфиса (-), Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° связан с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ (Π½Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ) ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ дСфисом Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π·Π½Π°ΠΊ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (`) Π»ΠΈΠ±ΠΎ Π²Π·ΡΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ связанный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ:

. \ShowArgs -name:$name

ВмСсто Π½Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄:

. \ShowArgs `-name:$name
. \ShowArgsΒ»-name:$nameΒ«

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ примСняСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π»ΠΈΠ±ΠΎ связаны Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, -name$name) ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· символ (Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ: ΠΈΠ»ΠΈ =), стоящий ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Однако ΠΎΠ½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ эквивалСнтны:

. \ShowArgs -name:Β»Gil BatesΒ«
. \ShowArgsΒ»-name:Gil BatesΒ«

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ навСрняка, ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ имя исполняСмого Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ShowArgs.exe, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для запуска исполняСмого Ρ„Π°ΠΉΠ»Π°.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ исполняСмого Ρ„Π°ΠΉΠ»Π°

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Cmd.exe ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния ERRORLEVEL для хранСния ΠΊΠΎΠ΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ послСднСго Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π°. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell для этих Ρ†Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $LASTEXITCODE. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π»ΠΈ ошибки ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ исполняСмого Ρ„Π°ΠΉΠ»Π°, выяснив, Ρ€Π°Π²Π½Π° Π»ΠΈ пСрСмСнная $LASTEXITCODE Π½ΡƒΠ»ΡŽ.

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки исполняСмого Ρ„Π°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Если трСбуСтся ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку, Π·Π°Π²ΠΈΡΡΡ‰ΡƒΡŽ ΠΎΡ‚ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. НапримСр, рассмотрим сцСнарий Test.ps1 Π² листингС 1.

Если Π²Ρ‹ запуститС сцСнарий Test1.ps1 с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -Test, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

. \ShowArgsΒ»/a:A B C /TestΒ«

Однако Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

. \ShowArgsΒ»/a:A B CΒ«/Test

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ $params ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ строковый ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ исполняСмого Ρ„Π°ΠΉΠ»Π°.

Одно Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Start-Process (см. листинг 2). Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Start-Process Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -ArgumentList, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой массив ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell автоматичСски Π½Π΅ расставляСт ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ придСтся Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π£ использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Start-Process Π΅ΡΡ‚ΡŒ ряд нСдостатков:

  • Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ исполняСмого Ρ„Π°ΠΉΠ»Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -RedirectStandardOutput. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Test3.ps1 Π² листингС 3 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π”Π°Π½Π½Ρ‹ΠΉ сцСнарий создаСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», запускаСт исполняСмый Ρ„Π°ΠΉΠ» (пСрСнаправляя Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ») ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Get-Content.
  • Команда Start-Process Π½Π΅ обновляСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $LASTEXITCODE.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ гибкости, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Start-Executable, ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π² листингС 4. Ѐункция Start-Executable Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ обновляСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $LASTEXITCODE. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -ArgumentList Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ -ArgumentList ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Start-Process.

БоставляйтС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ составлСниС ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… строк Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ мноТСством сомнСний, Π½ΠΎ Ρ‚Π°ΠΊ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΈΠ· этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных Β«ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉΒ» ΠΏΡ€ΠΈ запускС исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ShowArgs.exe Π² Β«Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹ΠΉΒ» Π½Π°Π±ΠΎΡ€ инструмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ.

Листинг 1. Test1.ps1

param(
[Switch] $Test
)
$arg =Β»A B CΒ«
$params =Β»/a:$argΒ«
if ( $Test ) {
$params +=Β» /TestΒ«
}
# Won't work as expected if using –Test
ShowArgs $params

Листинг 2. Test2.ps1

param(
[Switch] $Test
)
$arg =Β»A B CΒ«
# You have to insert your own quotes
$params = @(»/a:`«$arg`»«)
if ( $Test ) {
$params +=Β»/TestΒ«
}
Start-Process ShowArgs.exe -ArgumentList $params `
-NoNewWindow -Wait

Листинг 3. Test3.ps1

param(
[Switch] $Test
)
$arg =Β»A B CΒ«
$params = @(»/a:`«$arg`»«)
if ( $Test ) {
$params +=Β»/TestΒ«
}
$tempName = [IO.Path]::GetTempFileName()
$output =»«
$spArgs = @{
Β»FilePathΒ«= "ShowArgs.exeΒ»
Β«ArgumentListΒ» = $params
Β«NoNewWindowΒ» = $true
Β«WaitΒ» = $true
Β«RedirectStandardOutputΒ» = $tempName
}
Start-Process @spArgs
if ( test-path $tempName ) {
$output = get-content $tempName
remove-item $tempName
}

Листинг 4. Ѐункция Start-Executable

function Start-Executable {
param(
[String] $FilePath,
[String[]] $ArgumentList
)
$OFS = Β«"
$process = New-Object System.Diagnostics.Process
$process.StartInfo.FileName = $FilePath
$process.StartInfo.Arguments = $ArgumentList
$process.StartInfo.UseShellExecute = $false
$process.StartInfo.RedirectStandardOutput = $true
if ( $process.Start() ) {
$output = $process.StandardOutput.ReadToEnd() `
-replaceΒ»\r\n$Β«,"Β»
if ( $output ) {
if ( $output.Contains(Β«`r`nΒ») ) {
$output -split Β«`r`nΒ»
}
elseif ( $output.Contains(Β«`n") ) {
$output -splitΒ»`nΒ«
}
else {
$output
}
}
$process.WaitForExit()
&Β»$Env:SystemRoot\system32\cmd.exe" `
/c exit $process.ExitCode
}
}

Β 

Π Π°Π±ΠΎΡ‚Π° с исполняСмыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ PowerShell

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *