Стартиране на програма от PowerShell

Има няколко различни начина за стартиране на скрипта, по-долу са основните:

  1. Стартирайте PowerShell Shellи стартирайте скрипта в него (въведете пътя до файла и името на файла, например така: C:\Scripts\test.ps1 или отидете в папката на скрипта с командата cd C:\Scripts и го изпълнете с командата.\test.ps1) Обвивката може да бъде намерена и стартирана по различни начини. Един от начините е чрез менюто "Старт". За Windows 7 - трябва да отидете на "Всички програми" - "Аксесоари" - "Windows PowerShell" и да стартирате обвивката на "Windows PowerShell". За Windows 10 - трябва да намерите групата с буквата "W" и в нея ще намерите "Windows PowerShell".
  2. Стартирайте "Windows PowerShell ISE"- това е програма - среда за разработка, която ви позволява да редактирате и отстранявате грешки в скриптове на PowerShell, която също е там по подразбиране заедно със самия PowerShell. След като го стартирате, просто трябва да щракнете върху бутона "Отвори" или отидете в менюто Файл - Отворете и изберете желания скрипт, след което натиснете F5 или бутона "Изпълни скрипт". Можете да намерите Windows PowerShell ISE на същото място като обвивката на PowerShell - в менюто "Старт".
  3. Стартирайте стандартния команден реди напишете в него:
    powershell-файл<имя_скрипта> (пример: powershell -file myscript.ps1)

Ако не сте изпълнявали PowerShell скриптове преди, най-вероятно ще получите съобщение: Не може да се качи файл<имя_скрипта>тъй като изпълнението на скрипт не е разрешено в тази система. Напишете „get-help about_signing“ за повече информация. Това се дължи на факта, че от съображения за сигурност и за предотвратяване на случайно изпълнение на злонамерен код, всички скриптове трябва да бъдат цифрово подписани.

Как да разрешите изпълнението на неподписан PowerShell скрипт?

1. В PowerShell, преди да стартирате скрипта, изпълнете команда, която позволява изпълнението на неподписани скриптове за текущата сесия на обвивката:

Set-ExecutionPolicy RemoteSigned -Scope процес

2. Стартиране от стандартния команден редизползвайте опцията -executionpolicy, т.е. стартирайте скрипта така:

<имя_скрипта>

И двата метода задават политиката само за текущата сесия, докато политиката за защита на изпълнението на скрипт PowerShell, посочена в системния регистър, няма да бъде променена и ще остане същата. Ако искате да промените политиката за сигурност на изпълнението на скрипта на постоянна, използвайте този метод:

3. Разрешете стартирането завинаги: стартирайте PowerShell като "Администратор", след което изпълнете командата:

Set-ExecutionPolicy RemoteSigned

Забележка:Ако скриптът е изтеглен от интернет, тогава, за да избегнете заявка за потвърждение на стартирането, трябва да използвате Bypass вместо RemoteSigned - пълното деактивиране на всякакви заявки и предупреждения.

Как да стартирате PowerShell скрипт във фонов режим?

За да направите това, просто използвайте параметъра за стартиране -WindowStyle, който може да приема следните стойности: нормален, минимизиран, максимизиран и скрит. По този начин, за да стартирате неподписан скрипт във фонов режим, трябва да изпълните командата:

powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file<имя_скрипта>

Можете също така да добавите -NonInteractive, ако желаете, така че скриптът да не задава никакви въпроси. Така скриптът ще се изпълни незабележимо за потребителя. Внимавайте с този метод.

Изпълнение на PowerShell скрипт с параметри

Всъщност стартирането трябва да се извърши така, сякаш стартирате обикновена програма или bat файл с параметри. Например, за да стартирате скрипт с параметри от командния ред, можете да напишете следната команда:

powershell -executionpolicy RemoteSigned -файл<имя_скрипта>param1 param2 "друг текстов параметър"

В самия скрипт можете да получите тези параметри по следния начин:

Param ($var1, $var2, $var3) ехо $var1, $var2, $var3

В PowerShell ISE можете да стартирате скрипт с параметри по същия начин, като използвате командния панел.

Как да стартирате PowerShell скрипт с помощта на пряк път?

Има два начина за изпълнение на тази задача:

  1. Създайте bat / cmd файл, в който да регистрирате команда за изпълнение на скрипта (прочетохте параметрите по-горе)
  2. Създайте пряк път към PowerShell, който може да бъде намерен в c:\Windows\System32\WindowsPowerShell\v<версия>\ и в свойствата на прекия път в полето "Обект" добавете необходимите параметри.

Така, например, за да изпълните скрипт на powershell, когато потребител влезе, можете просто да създадете пряк път, както е описано във 2-ри параграф, и да го поставите в автоматично зареждане. Освен това създаването на пряк път с помощта на един от методите по-горе ще улесни стартирането на скрипта като администратор или като всеки друг потребител като обикновена програма.

Скриптовият език PowerShell е доста мощен инструмент за решаване на различни проблеми, но може да се използва не само за добри неща, но и за вреда, така че го използвайте разумно;)

Опитните потребители на операционната система Windows 10 може би са чували за помощната програма за команден ред PowerShell. Може да е познат и на тези с опит с Windows 7 и 8.1. След години на използване на приложението за команден ред на Windows и .bat файловете, време е да се запознаете с един по-мощен инструмент.

PowerShell е ценно допълнение към списъка с инструменти на Windows и големият му мащаб може да отблъсне някои потребители. Скриптов език ли е или командна обвивка? Не се притеснявайте: въпреки огромните възможности, всеки може да овладее PowerShell.

Стъпка 1: Инсталиране

Първо, имаме нужда от самата помощна програма PowerShell. Ако работите с Windows 10, вече имате инсталиран PowerShell 5. Windows 10 Anniversary Update използва версия 5.1, но няма забележима разлика. Windows 8 и 8.1 използват PowerShell 4, което също е достатъчно. Инсталирането на PowerShell на Windows 7 няма да е проблем, но все още трябва да предприемете няколко допълнителни стъпки. По-специално, трябва допълнително да инсталирате .Net Framework. Можете да инсталирате Windows Management Framework, която включва PowerShell.

PowerShell има два интерфейса. Напредналите потребители могат да изберат пълен графичен интерфейс, известен като Интегрирана среда за скриптове (ISE). За начинаещи е най-добре да използвате конзолата PowerShell, прост текстов интерфейс в стил команден ред на Windows или дори DOS 3.2.

За да стартирате PowerShell като администратор на Windows 10, щракнете върху бутона Старт и превъртете през списъка с приложения до Windows PowerShell. В Windows 8.1 потърсете Windows PowerShell в папката System в Windows. В Windows 7 обвивката се намира в папката Accessories. Като обикновен потребител, PowerShell може да бъде стартиран по абсолютно същия начин, като използвате левия бутон на мишката вместо десния.

Можете да използвате търсене във всяка версия на Windows. За по-лесно използване можете да закачите PowerShell към лентата на задачите.

Стъпка 2: Стари Windows команди

Синтаксисът на командите на Windows в PowerShell работи по обичайния начин. Например, cdпроменя папки, режпоказва списък на всички файлове и папки в текущата папка.

В зависимост от това как стартирате конзолата PowerShell, можете да започнете от c:\Windows\system32или в c :\Потребители\ . Примерът на екранната снимка използва командата cd..(с интервал), за да се изкачите едно ниво нагоре, след което изпълнете командата режза показване на списък с файлове и папки в директория ° С:\.

Стъпка 3: Инсталиране на помощните файлове

Команди като cdи режне са активни команди на PowerShell. Това са така наречените псевдоними (aliases) - заместители на реални PowerShell команди. Псевдонимите са удобни за тези с много опит с командния ред. Те обаче не докосват дълбините на PowerShell.

За да започнете с PowerShell, въведете помогнеи командата, от която се нуждаете. Екранната снимка показва командата .

Екип помогнеказва това реже псевдоним за команда на PowerShell Get-ChildItem. Ако наберете get-childitemв PS C:\>, ще видите същото като при използване на командата реж.

Както е посочено в долната част на екранната снимка, помощните файлове за PowerShell не се инсталират автоматично. За да ги получите, стартирайте PowerShell като администратор и въведете актуализация-помощ. Инсталирането на помощните файлове ще отнеме няколко минути, редица модули може да липсват - например Помощ за NetWNV и SecureBoot не са инсталирани в този случай. Когато всичко е готово, пълната помощна система винаги ще дава правилните съвети.

Сега въведете командата потърси помощи всяка команда, която ви интересува ("cmdlet" на езика PowerShell, на руски cmdlets), нейното описание ще бъде показано. Например, get-help get-childitemдава списък с опции get-childitem. Можете също така да показвате различни възможни опции. Например

get-help get-childitem -примери

дава седем подробни примера за употреба get-childitem. Екип

get-help get-childitem -подробно

включва тези седем примера и подробни обяснения на всеки параметър в cmdlet get-childitem.

Стъпка 4: Получаване на помощ за настройките

На екранната снимка може да сте забелязали два списъка под СИНТАКСИСза get-childitem. Наличието на два различни синтаксиса означава, че можете да използвате два начина за изпълнение на cmdlet. Как да запазим синтаксиса отделен един от друг и какво означават параметрите? Отговорът е лесен, ако знаете трика.

За подробности относно параметрите на cmdlet get-childitemили всеки друг параметър за използване - пълен:

get-help get-childitem -full

Това дава списък на това, което можете да правите с cmdlet и какво ще се случи. Вижте екранната снимка.

Разглеждането на описанието на параметрите ви позволява да забележите това get-childitemправи възможно получаването на обект дете(като име на подпапка или име на файл) на посоченото място, със или без съвпадение на определени знаци. Например:

get-childItem "*.txt" -рекурсия

връща списък с файлове "*.txt" в текущата папка и всички подпапки (поради - рекурсия). като има предвид, че

get-childitem „HKLM:\Software“

връща списък с всички ключове в системния регистър от най-високо ниво HKEY_LOCAL_MACHINE\Софтуер.

Ако някога сте опитвали да влезете в системния регистър с помощта на командния ред на Windows или .bat файлове, ще можете да оцените функционалността на тази опция за достъп.

Стъпка 5: Научаване на имена

Има причина, поради която кратки команди, показани досега, изглеждат подобни: get-childitem, update-help, get-helpизползвайте същия модел глагол-съществително. Тази конвенция се прилага за всички кратки команди на PowerShell, където глаголът стои преди отделното съществително. Това ще се хареса на тези, които по едно време са страдали от несъответствието на имената на командите във VB и VBA.

Разгледайте най-често срещаните командлети:

задайте местоположение: задава текущото работно местоположение на конкретно място

получаване на съдържание: вземете съдържанието на файла

get-item: вземете файлове и папки

копие-т: копира обект от едно място на друго

Премахни артикул: изтрива файлове и папки

: Задейства процеси на локалния или отдалечения компютър

вземете услуга: Получава услуги, работещи на локален или отдалечен компютър

invoke-webrequest: получава съдържание от уеб страница в интернет

За да видите как работи конкретен cmdlet, използвайте потърси помощкакто в случая

get-help copy-item -full

Въз основа на описанието в помощта можете да разберете от какво се нуждае кратката команда. Например, ако искате да копирате всички файлове и папки от Документив c:\temp, използвайте

копиране на елемент c:\потребители\ \documents\* c:\temp

Като въведете тази команда, ще видите някои интересни функции на средата PowerShell. Например, ако пишете копие-iи натиснете бутона Tab, PowerShell ще се запълни Копиране на елемент. Ако cmdlet е въведен неправилно и PowerShell не може да го разпознае, се дава пълно описание на това, което се е объркало.

Опитайте тази кратка команда:

invoke-webrequest askwoody.com

Ще получите кратък списък със заглавия, изображения, връзки и друго съдържание на уеб страници. Обърни внимание на потърси помощкъм списъка invoke-webrequest, който "връща колекция от форми, връзки, изображения и други важни HTML елементи" - точно това, което трябва да се показва на екрана.

Някои командлети помагат за управлението на самия PowerShell:

get-команда: списък на всички налични кратки команди

get-глагол: списък на всички налични глаголи

clear-host: Изчистете екрана на хост програмата

Различните параметри ви позволяват да намалите командите и да стесните обхвата от полезни опции. Например, за да видите списък с всички кратки команди, които работят с услуги на Windows, въведете

get-command *-service

Ще бъдат показани всички налични глаголи със съществително обслужване. Ето техния списък:

Вземете услуга

Нова услуга

Рестартирайте услугата

Резюме услуга

Задаване на услуга

старт-сервиз

Спиране на услугата

Спиране на услугата

Можете да комбинирате тези командлети с други.

Стъпка 6: Използване на тръби

Ако сте запознати с командния ред на Windows или пакетните файлове, тогава знаете за пренасочването и каналите. Пренасочването (символът >) и каналите (символът |) вземат резултата от действие и го прикачват другаде. Например, можете да пренасочите резултата от команда режкъм текстов файл или предайте резултата от командата пингкъм отбора намирамза филтриране на интересни резултати, като

dir > temp.txt

пинг askwoody.com | намерете "пакети" > temp2.txt

Тук във втория отбор намирамтърси низ пакети, взет от адреса askwoody.com чрез командата пинги обединява всички съответстващи редове във файл, наречен temp2.txt.

Първата от тези команди работи добре в PowerShell. За да изпълните втората команда, имате нужда от нещо подобно

пинг askwoody.com | изберете низови пакети | изходящ файл temp2.txt

Използването на пренасочване и канали значително разширява възможностите на командния ред на Windows: вместо безкрайно превъртане надолу по екрана в търсене на текстов низ, можете да филтрирате желаните команди на Windows.

Powershell има поддръжка тръба, и не се ограничава до текст. PowerShell ви позволява да предадете цял обект от една кратка команда към друга, където обектът е комбинация от данни (наречени свойства) и действия (методи), които могат да използват тези данни.

Сложната част започва, когато обектите са подредени. Обектите, предоставени от една кратка команда, трябва да съответстват на типа обекти, приети от получаващата кратка команда. Текстът е много прост тип обект, така че ако работите с текст, подравняването на обекти е проста задача. Други обекти не са толкова елементарни.

Как да го разбираме? Използвайте cmdlet get-член. Ако искате да знаете какъв тип обект обработва cmdlet, прокарайте го get-член. Например, ако се опитвате да разберете процесите, изпълнявани на компютър, и сте стеснили опциите до кратки команди , ето как да разберете резултата от кратки команди:

получаване на процес | get-член

Изпълнението на тази кратка команда създава дълъг списък от свойства и методи за , но в самото начало на списъка можете да видите вида на обекта, който създава :

TypeName: System.Diagnostics.Process

Екранната снимка по-долу също показва свойствата озаглавен get-process Дръжки, Име, NPM, PM, SI, VMи WS.

Ако искате да манипулирате резултата за да работите с тази команда (вместо да показвате дълъг списък от активни процеси на монитора), трябва да намерите друга команда, която приема като вход Система.Диагностика.Процес. Използвайте отново PowerShell, за да намерите правилната команда:

get-command -Parametertype System.Diagnostics.Process

Тази кратка команда създава списък с кратки команди, които могат да обработват Система.Диагностика.Процес.

Някои кратки команди са известни с това, че приемат почти всякакъв вид данни. Главен сред тях е . Тази кратка команда пропуска през себе си всеки обект, изпратен през тръбата, един по един, и прилага посочените критерии за избор към него. Има специален маркер т.нар $_ , което ви позволява да използвате всеки елемент в тръбата, един по един.

Да кажем, че искате да получите списък на всички процеси, изпълнявани на компютъра с името "svchost", тоест искате да съвпаднете със свойството Имепроцес svchost. Използвайте командата:

получаване на процес | where-обект ($_.Name -eq "svchost")

Cmdlet гледайки всеки предмет Система.Диагностика.Процес, сравнява .Иметози обект с "svchost"; ако има съвпадения, те се показват на монитора. Вижте екранната снимка.

Стъпка 7: Анализирайте полезните команди на PowerShell

Досега вече знаете достатъчно, за да можете да повредите компютъра, така че бъдете внимателни. Нека да видим например често изискваните команди на PowerShell.

Тези команди работят само в Windows 10 и само когато стартирате PowerShell като администратор. Те са предназначени за повторно инсталиране на предварително инсталирани приложения на Windows 10 и могат да бъдат полезни за тези, които първо са деинсталирали тези програми и след това са решили да ги върнат. Командите изглеждат така:

Get-AppXPackage | Foreach (Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”)

Ако изпълните тази команда, игнорирайте предупрежденията, обозначени в червено, и когато командата приключи, рестартирайте компютъра си; всички предварително инсталирани програми в Windows 10 ще се появят на местата си.

Ето как работи тази команда. Get-AppXPackageпроверява всички пакети с приложения в потребителския профил. Дори ако деинсталирате приложение, то остава в списъка с профили на потребителя.

Cmdlet Get-AppXPackageвръща обект Име на тип Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage, което включва пълното име на пакета на приложението и местоположението на съответния файл на XML манифеста. Ако изпълните cmdlet get-appxpackage, ще видите дълъг списък с пакети с приложения. Екранната снимка показва описание на приложението Xbox.

Cmdlet За всекипреминава през всеки обект AppXPackage, изпращайки ги към cmdlet Add-AppxPackage. Според потърси помощза Add-AppxPackage, има два ключови превключвателя:

  • Превключване -Регистрирамизползвани за регистриране на съществуващи инсталации на пакети с приложения, можете да зададете опции Деактивирайте режима на разработкаи Регистрирам
  • Превключване -Деактивиране на режима на разработкаказва на Windows да регистрира отново съществуващ пакет с приложения, който е бил деактивиран, нерегистриран или повреден.

линия " $($_.InstallLocation)\AppXManifest.x ml" описва къде се намира файлът manifest.xml. Ако погледнете файловете AppXManifest.xml, ще видите сложен списък с идентификатори на приложения, изпълними файлове и голям брой визуални елементи, свързани с приложението.

След рестартирането всички добавени пакети с приложения се изтеглят и инсталират от Windows Store.

Здравейте всички! Днес малка бележка по темата, как да отворите powershell като администратор. Позволете ми да ви напомня, че PowerShell е мощен език за програмиране и администриране от Microsoft, всяка година той придобива все повече и повече командлети и функционалност. По същество това е заместител на командния ред на Windows. По-долу ще разгледаме методите, които ви позволяват да го отворите и конфигурирате.
.

Методи за отваряне на модул PowerShell

Powershell се развива много добре и с излизането на Windows 10 вече получи версия 4, но нашата тема е друга. И така, как да отворите powershell? Всичко е просто, ако в Windows XP, тогава нищо. тъй като се доставя отделно, във всички следващи версии идва като вграден компонент. Най-универсалният начин за отваряне на powershell е да натиснете

Win + R и въведете powershell

С натискане на enter се стартира PowerShell конзолата, единственият проблем е, че няма да се отвори от името на администратора. И в резултат на това много команди няма да могат да бъдат изпълнени, по-долу ще разгледаме как да направите това от името на администратора.

Как да отворите Windows powershell като администратор в Windows 8.1 и Windows 7

Можете да отворите Windows powershell чрез start. В Windows 8.1, Windows 2012 R2 отидете на System Tools - Windows и щракнете с десния бутон върху Run as administrator.

В Windows 7 и Windows 2008 R2 изглежда така Старт > Аксесоари > Windows PowerShell

Можете също да създадете пряк път в елемента на задачата и да щракнете с десния бутон върху него и да изберете съответния елемент

би било хубаво PowerShell винаги да се отваря като администратор, нека приложим това. Това се прави във всички версии на Windows по същия начин. Отваряне на контролния панел

Щракнете с десния бутон върху него и изберете свойства. Веднага можете да видите пътя до файла, където се намира в системата.

Щракнете върху бутона "Разширени". Ще видите допълнителни свойства. където трябва да поставите отметка в квадратчето, за да стартирате като администратор.

Всичко е много просто. Сигурен съм, че сега няма да имате въпрос как да отворите Windows powershell. Друго полезно нещо е да промените шрифта в прозореца на Powershell.

Как да отворите PowerShell чрез контекстното меню на бутона "Старт" в Windows 10

Microsoft все повече се фокусира върху командния ред към неговия силен език (PowerShell) и това е логично, тъй като възможностите му за управление на операционни системи от фамилията Windows са почти неограничени, ако не и повече от графичния интерфейс. Започвайки с Windows 10 версия 1709, в контекстното меню PowerShell замени познатия cmd. Щракнете с десния бутон върху бутона за стартиране в Windows 10 и от контекстното меню изберете съответния елемент:

  1. Windows PowerShell
  2. Windows PowerShell (администратор) - точно това е режимът с максимални права в Windows 10.

Стартиране на Windows PowerShell с търсене в Windows 10

В Windows 10 и по-стари версии можете да намерите обвивката на PowerShell, като използвате обичайното търсене, има специален раздел за това. Щракнете до бутона Старт, иконата на лупа. Във формата за търсене, която се отваря, въведете думата PowerShell. Ще бъдете претърсени за всички опции, сред които ще намерите черупката. Ако щракнете с десния бутон върху него, можете да го отворите като администратор.

Стартиране на Windows PowerShell с помощта на менюто "Старт" в Windows 10

За да отворите PowerShell shell от менюто "Старт", отворете го и намерете елемента Windows PowerShell, той ще бъде под формата на папка, отворете го и стартирайте подходящата версия.

Ако щракнете с десния бутон, ще можете да стартирате обвивката от името и с администраторски права.

Допълнителни и общи методи за стартиране на Shell

Има и много специфични методи за отваряне на обвивка с мощен език от Microsoft. Най-тромавото е просто да намерите изпълнимия файл и да го стартирате директно от местоположението в системата. Предаваме вашия Windows 10 по пътя:

C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell

В резултат на това ще отворите папка с преки пътища, които присъстват в менюто "Старт", можете да ги стартирате.

Можете също така да стартирате оригиналния изпълним файл, който се намира по пътя:

C:\Windows\System32\WindowsPowerShell\v1.0

И с десния бутон върху него можете да го изтеглите като администратор, с максимални права.

Можете също да стартирате Windows PowerShell от прозорец на командния ред, просто въведете вълшебната дума в него и натиснете Enter.

Е, ще ви напомня и за метода за стартиране на нова задача от конзолната добавка на диспечера на задачите. Отворете "Диспечер на задачите", изберете елемента от менюто "Файл - Стартиране на нова задача"

В прозореца, който се показва, въведете PowerShell.

Е, последният познат ми метод е стартирането на PowerShell през Windows 10 Explorer, за този отворен Explorer изберете елемента от менюто „Файл - Изпълнение на Windows PowerShell“, ще има и двата режима.

Какво е PowerShell ISE

Със сигурност сте забелязали, че навсякъде има пряк път за PowerShell ISE и бихте искали да знаете какво представлява той. Накратко, това е специална обвивка, в която можете да пишете скриптове и скриптове на езика PowerShell, като използвате цялото разнообразие от кратки команди, които Microsoft ви предлага.

промените на шрифта на powershell много просто отидете в раздела свойства Шрифт, където можете да зададете размера от 5 до 72.

можете също да стигнете до свойствата от самия прозорец на помощната програма, щракнете върху иконата в горния ляв ъгъл и изберете свойства

Тук настройките на шрифта са малко по-различни, заедно с промяната им се променя и размерът на конзолата.

В раздела Цветове можете да зададете цвета на шрифта в Powershell и самия прозорец. Като го направите черен например като командния ред.

Също така съветвам, ако сте активен конзолен играч, задайте размера на буфера не на 50 команди, а поне на 100.

Благодаря за вниманието. Това са методите за отваряне на конзолата Power Shell в Windows. Материал на сайта

Стартиране на програма от PowerShell

Задачата за стартиране на всеки изпълним файл (програма или помощна програма за команден ред) от PowerShell е доста често срещана. PowerShell предлага няколко различни начина да направите това, които ще разгледаме по-късно в тази статия. Да започнем с най-простото...

директно стартиране

Най-лесният начин да стартирате изпълним файл в PowerShell е да отидете до директорията, съдържаща файла, и да го стартирате директно. Например, нека вземем проста програма, която показва поздрав, и я изпълним с командата:

Set-Location ″C:\Program Files″
.\Hello.exe

Моля, имайте предвид, че дори и да сте в правилната директория, трябва да посочите относителния път към изпълнимия файл. Изключение са файлове от директории, изброени в променливата на средата (път). Например, различни вградени програми и помощни програми (notepad, calc, ping и т.н.), намиращи се в директорията Windows\System32, могат да се стартират без да се посочва пътя.

& оператор

Ако трябва да посочите пълния път до изпълнимия файл, можете да използвате оператора & (повикване на оператор). Тя ви позволява да изпълните низ от текст, посочен в кавички, като една команда. Например:

&'C:\Program Files\Hello.exe'

Тъй като операторът & не анализира подадената команда, той не може да интерпретира нейните параметри. Следователно допълнителните параметри/аргументи също се предават като текст, в кавички. Например, нека вземем предишната програма и я модифицираме малко, така че да приема желания текст като аргумент:

& 'C:\Program Files\Hello.exe' 'Здравей, свят'

По желание можете да посочите множество аргументи, разделени със запетаи:

& ′C:\Program Files\Hello.exe′ ′Hello,′, ′ world′

За удобство командата и аргументите могат да бъдат поставени в променливи:

$exe = 'C:\Program Files\Hello.exe'
$arg1 = 'Здравей'
$arg2 = 'свят'
& $exe $arg1 $arg2

Е, ако има много аргументи, тогава те могат да бъдат комбинирани с помощта на следната конструкция:

$exe = 'C:\Program Files\Hello.exe'
$allargs = @(′Здравей,′,′свят′)
& $exe $alargs

Извикване на израз

Командлетът Invoke-Expression работи почти по същия начин като оператора & - той взема текстов низ и го изпълнява като команда. Например:

Invoke-Expression -Command 'C:\Windows\Hello.exe'

Той обаче има един голям недостатък, а именно невъзможността за работа с интервали. Например следната команда ще генерира грешка:

Invoke-Expression -Command 'C:\Program Files\Hello.exe'

Тази функция прави използването на cmdlet изключително неудобно. Въпреки че, ако е необходимо, такива грешки могат да бъдат избегнати с помощта на допълнителни цитати, например като този:

Invoke-Expression -Command ″C:\′Program Files′\Hello.exe″

старт-процес

Кратката команда Start-Process стартира посочения файл като процес, използвайки започнете.NET клас процес. Например:

Старт-процес -FilePath 'C:\Program Files\Hello.exe'

По подразбиране процесът се изпълнява в отделен прозорец, който се затваря, когато процесът приключи. Можете да промените това поведение с помощта на параметри, така че следната команда ще се изпълни в текущия прозорец:

Старт-процес -FilePath 'C:\Program Files\Hello.exe' -NoNewWindow -Изчакайте

Start-Process също ви позволява да подадете допълнителни аргументи към процеса:

Start-Process -FilePath 'C:\Program Files\Hello.exe' -ArgumentList 'Hello, world' -NoNewWindow -Изчакайте

По подразбиране cmdlet не връща нищо, но можете да използвате параметъра -PassThru, за да го принудите да върне процесен обект. Този обект е много удобен за поставяне в променлива:

$process = Start-Process -FilePath ′C:\Program Files\Hello.exe′ -Wait -PassThru

от които след това можете да научите много полезни неща, като например състоянието:

$process.HasExited

$process.ExitTime

или код за изпълнение:

$process.ExitCode

.NET

По принцип класът .NET Process може да се използва директно без cmdlet Start-Process. Например, можете да стартирате процеса с командата:

::Start('C:\Program Files\Hello.exe')

Този метод е доста неудобен и тромав (по мое мнение), но малко по-гъвкав в употреба. Например, нека изпълним нашата програма в текущия прозорец, да й предадем аргументи и да вземем резултата от изпълнението:

$process = New-Object -TypeName System.Diagnostics.Process
$process.StartInfo.FileName = ″C:\Program Files\Hello.exe″
$process.StartInfo.Arguments = ″Здравей, свят″
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$process.Start()
$process.WaitForExit()

$process.StandatdOutput.ReadToEnd()

WMI

Можете да правите почти всичко с WMI, включително стартиране на програма. За това методът Създавайте wmi-клас Win32_Process.Този метод стартира процес на локалния или отдалечения компютър чрез RPC. Например, за да стартирате програма на локалния компютър, можете да използвате следната команда:

()″Win32_Process″).Create(′C:\Program Files\Hello.exe′)

И за да се изпълни на отдалечен компютър, командата ще изглежда така:

()″\\remotecomputer\root\cimv2:Win32_Process″).Create(′C:\Program Files\Hello.exe′)

Като алтернатива можете да използвате командата Invoke-WmiMethod:

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″C:\Program Files\Hello.exe″

Или с кратката команда Invoke-CimMethod:

Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @(CommandLine=″C:\Program Files\Hello.exe″)

WMI стартира процеса в отделен прозорец и връща обект, съдържащ идентификатора на процеса (ProcessID) и резултата от изпълнението (ReturnValue). ReturnValue може да приема следните стойности:

0 — Успешно завършване
2 - Отказан достъп
3 — Недостатъчни привилегии
8 — Неизвестен отказ
9 - Пътят не е намерен
21 — Невалиден параметър

Invoke-Command

Кратката команда Invoke-Command може да изпълнява команди на локален или отдалечен компютър с помощта на WinRM. Например, за да стартираме нашата програма на локалния компютър, използваме командата:

Invoke-Command -ScriptBlock (″C:\′Програмни файлове′\Hello.exe″)

Ако е необходимо, аргументите могат да бъдат предадени на програмата:

Invoke-Command -ScriptBlock (C:\'Program Files'\Hello.exe ″Hello,world″)

Моля, обърнете внимание, че Invoke-Command не е много приятелски настроен към интервалите, така че трябва да измислите кавички, за да избегнете грешки. Подобни проблеми обаче могат да бъдат избегнати, например чрез комбиниране на използването на cmdlet с оператора &:

Invoke-Command -ScriptBlock (&'C:\Program Files\Hello.exe')

Invoke-Command се използва главно за дистанционно управление, основното му предимство е възможността да работи едновременно на няколко компютъра. Например:

Invoke-Command -ScriptBlock (″C:\'Program Files'\Hello.exe″) -ComputerName SRV1,SRV2,SRV3

$scriptblock = (″C:\'Програмни файлове'\Hello.exe″)
$Компютри = @(′SRV1′,′SRV2′,′SRV3′)
Invoke-Command -ScriptBlock $scriptblock -ComputerName $Computers

По подразбиране cmdlet връща резултата от изпълнението на програмата и ако я стартирате във фонов режим (параметър -AsJob), тя връща обекта Job:

Invoke-Command -ScriptBlock (C:\'Program Files'\Hello.exe) -ComputerName localhost -AsJob -JobName Hello

Invoke-Item

Кратката команда Invoke-Item е предназначена за прилагане към файл за действие по подразбиране. Така че можете да стартирате изпълнимия файл с командата:

Invoke-Item -Path ″C:\Program Files\Hello.exe″

Най-удобно е обаче да използвате Invoke-Item за отваряне на конкретен тип файл. Ето как например отваряме текстов файл:

Invoke-Item -Path ″C:\Files\test.txt″

И така всички текстови файлове в папката:

Invoke-Item -Path ″C:\Files\*.txt″

cmd

И накрая, друг начин за стартиране на програма от PowerShell е използването на cmd shell. Методът е доста ″индиректен″, но въпреки това работи. Следната команда стартира нов екземпляр на cmd, изпълнява указаната програма в него, излиза от cmd и връща резултата:

cmd /c ″C:\Program Files\Hello.exe″

Такова изобилие от начини за стартиране на програмата осигурява PoSh. И всеки от тях е добър за определени ситуации.

Между другото, статията е базирана на PowerShell: Deep Dive and Best Practice. Силно препоръчвам да го прочетете, има много повече.