У дома други Powershell, където се намира Windows 7. Windows PowerShell - какво е това, функции и изисквания

Powershell, където се намира Windows 7. Windows PowerShell - какво е това, функции и изисквания

И докато изучават менюто "Старт" на Windows 7 или началния екран 1 на Windows 8, начинаещите потребители често откриват приложения, чиято цел не разбират. Само едно такова приложение е PowerShell. Какво представлява този PowerShell и има ли полза от него? Е, след като някой го е измислил и го е интегрирал в Windows, значи все пак има смисъл. Между другото, компанията, която е изобретила PowerShell, е Microsoft.

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

Какво може да направи този инструмент за администриране?Много неща. С негова помощ системните администратори и напредналите потребители могат да управляват процеси, услуги, съхранение на файлове, акаунти и дори сървъри. Обвивката също ви позволява да изпълнявате външни команди и да работите с обекти .NET, COMИ XML, изпълнявайте различни трикове и др., създавайте и изпълнявайте собствени сценарии. Между другото, за писане на скриптове в Windows има специална графична конзола I.S.E., което е нещо като допълнение към основната обвивка на PowerShell.

Също като конзолата CMD, PowerShell има свой собствен набор от команди, наречени кратки команди. Помощната програма разпознава много от CMD командите, но като цяло синтаксисът на езика, дефинициите на кратки команди и техните параметри се различават от това, което потребителите са свикнали да виждат в обикновен команден ред. В допълнение, познати команди като реж , CD , копие и т.н., които се разбират перфектно от PowerShell, всъщност са псевдоними. Например командата Реж , който се използва за преглед на файловата система, съответства на „родния“ cmdlet Get-ChildItem. Псевдонимите или както се казва псевдонимите са само за удобство.

Разбирането на PowerShell за начинаещ потребител, особено ако той не е запознат поне с основите на обикновен команден ред, няма да е лесно. Но няма толкова много ръководства и справочници, които са достатъчно ясни и лесни за разбиране. Има добро ръководство, написано от Франк Кох, което препоръчваме да прочетете, ако решите да започнете да изучавате скриптовия език PowerShell. Е, и разбира се, собствената помощна система на shell.

Той е мощен и изчерпателен, с много конкретни примери. Използва се доста лесно. Основна информация за системата за помощ се показва от кратката команда Извикай помощ. Cmdlet Get-Commandпоказва списък с всички налични команди.

PowerShellе обектно-ориентиран софтуерен двигател и скриптов език с интерфейс на командния ред, който предоставя на ИТ специалистите по-големи възможности за конфигуриране на операционни системи от фамилията MS Windows. Просто казано, това е един вид универсален инструмент за администриране. Тази статия ще обсъди основните техники за писане на скриптове в PowerShell, които ви позволяват да автоматизирате управлението на вашата Windows среда по лесен начин.

PowerShell предлага както чист конзолен интерфейс, така и пълна среда за разработка PowerShell ISE(Интегрирана среда за скриптове, вградена среда за скриптове) за скриптове. За да стартирате интерфейса на командния ред, въведете powershell в менюто Run (WinKey + R). PowerShell ISE се стартира с помощта на командата "PowerShell ISE" в същото меню.

ISE е по-предпочитан, тъй като предоставя повече възможности на програмиста благодарение на подчертаването на синтаксиса, автоматичното довършване на кода и други функции, присъщи на много „големи“ IDE.

Писане и изпълнение на скриптове

Скриптовете се записват като файлове с разширение .ps1. Въпреки че PowerShell отдавна е естествена част от операционната система Windows, не можете да стартирате неговите скриптове с просто двойно щракване. За да направите това, щракнете с десния бутон върху скрипта и изберете „Изпълни в PowerShell“.

Има и системни политики, които ограничават изпълнението на скриптове. Можете да проверите текущите си настройки на правилата, като изпълните командата Get-ExecutionPolicy. Резултатът ще бъде една от следните стойности:

  • Ограничен- изпълнението на скриптове е забранено. Стандартна конфигурация;
  • AllSigned- можете да изпълнявате скриптове, подписани от доверен разработчик; Преди да изпълни скрипта, PowerShell ще ви помоли за потвърждение;
  • RemoteSigned- можете да стартирате свои собствени скриптове или такива, подписани от доверен разработчик;
  • Без ограничения- можете да стартирате всякакви скриптове.

За да започнете, трябва да промените настройката на правилата за стартиране на RemoteSigned с помощта на командата Set-ExecutionPolicy:

Cmdlets

Кратки команди са команди с предварително дефинирана функция, подобни на условните изрази в езиците за програмиране. Те имат няколко основни характеристики:

  • Има системни, потребителски и незадължителни командлети;
  • резултатът от изпълнението на cmdlet ще бъде обект или масив от обекти;
  • Кратки команди могат да обработват данни и да ги предават на други кратки команди с помощта на конвейери;
  • кратки команди са нечувствителни към главни и малки букви, така че няма разлика между Get-ADUser, get-aduser и gEt-AdUsEr;
  • като разделител се използва символ; .

Всеки cmdlet съдържа глагол и съществително име, разделени с тире. Например:

  • Get-Process- показване на текущи процеси, изпълнявани на компютъра;
  • Get-Service- показване на списък с услуги и техния статус;
  • Get-Content- показване на съдържанието на посочения файл, например Get-Content C:\Windows\System32\drivers\etc\hosts .

Ако е необходимо, можете да изброите всички налични кратки команди с помощта на Get-Help-Category:

Можете също да създадете свои собствени командлети.

Настроики

Всеки cmdlet има няколко параметъра, които определят как работи. PowerShell ISE автоматично предлага всички налични параметри и показва техния тип. Например Get-Service-NameW* връща списък от услуги, чието име започва с W . Ако забравите какви параметри има въведеният от вас cmdlet, използвайте Get-Member. Например Get-Process | Get-Member:

Ако не намерите това, от което се нуждаете, или не сте сигурни как да зададете правилно параметрите, можете дори да поискате примери, като използвате параметъра -Examples:

Някои кратки команди могат също да бъдат извикани с помощта на псевдоними, например вместо Get-Help можете просто да напишете Help.

Когато пишете големи скриптове или екипно развитие, можете да използвате коментари. Всеки коментар започва със знак # и блокът за коментари е ограничен до комбинации от знаци<# и #>съответно в началото и в края.

Конвейер

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

  • GetService | SortObject -property Status - сортиране на работещи услуги по статус;
  • "Здравей свят!" | Out-File C:\ps\test.txt - запис на текст във файл.

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

Get-Service | WHERE ($_.status -eq “Изпълняващ се”) | ИЗБЕРЕТЕ екранно име

Заключение

И така, благодарение на този урок, начинаещите имат представа какво представлява PowerShell. Разгледахме също опциите за промяна на правилата за изпълнение на скриптове, какво е cmdlet, как обменят данни с помощта на конвейер и как да получите свойствата на желания обект. Не забравяйте, че ако имате някакви проблеми, можете да използвате cmdlet Get-Help.

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

Ако Windows 10 е инсталиран на вашия компютър, тогава може би още по-бърз начин да отворите PowerShell е да щракнете с десния бутон върху бутона „Старт“ и да изберете желания елемент от менюто (там има два елемента - за просто стартиране и като администратор). Същото меню може да бъде извикано чрез натискане на клавишите Win+X на клавиатурата.

Забележка: ако в това меню вместо Windows PowerShell видите командния ред, тогава можете да го замените с PowerShell, ако желаете, в Настройки - Персонализиране - Лента на задачите, активирайки елемента „Замяна на командния ред с Windows Powershell“ (в опцията за най-новите версии на Windows 10 е активирана по подразбиране).

Стартиране на PowerShell с помощта на диалоговия прозорец Изпълнение

Друг лесен начин за стартиране на PowerShell е да използвате прозореца Run:

  1. Натиснете клавишите Win+R на клавиатурата.
  2. Въведете powershellи натиснете Enter или Ok.

В същото време в Windows 7 можете да зададете опцията за стартиране като администратор, а в най-новата версия на Windows 10, ако натиснете Enter или Ok, докато държите натиснати клавишите Ctrl + Shift, помощната програма също ще работи като администратор.

Видео инструкция

Други начини за отваряне на PowerShell

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

Също така се случва хората да питат какво представляват PowerShell ISE и PowerShell x86, които се намират например при използване на първия метод. Отговарям: PowerShell ISE - „Интегрирана среда за скриптове на PowerShell.“ По същество можете да го използвате, за да изпълнявате всички същите команди, но освен това съдържа допълнителни функции, които улесняват работата със скриптове на PowerShell (помощ, инструменти за отстраняване на грешки, цветно маркиране, допълнителни клавишни комбинации и т.н.). На свой ред, x86 версиите са необходими, ако работите с 32-битови обекти или с отдалечена x86 система.

PowerShell 5.0 идва с Windows 10, но за предишни операционни системи новата версия беше пусната като част от Windows Management Framework 5.0 едва в края на февруари и то от втория опит. Днес ще говоря за някои от новите функции, но ще започна с това защо може да имате нужда от PowerShell.

Защо ви е необходим PowerShell

Няма смисъл да изучавате PowerShell просто така и това важи за всеки език - скриптов, софтуерен и дори човешки. Подобно на много решения на Microsoft, PowerShell е проектиран с мисъл за бизнеса, за да автоматизира задачите по управление на компютри и сървъри в организации.

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

Веднъж ми се наложи да изтрия една колона от много работни книги на Excel 2013. Ръчната работа беше отвратителна, а гугълът не предостави готово решение. Създадох тема във форума (да, понякога задавам въпроси и в OSZone :). Всеки език беше подходящ за мен, но решението неочаквано се оказа PowerShell. Както се оказа, можете да заредите Excel като COM обект и да го манипулирате допълнително.

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

Мисля, че идеята е ясна и вече можем да преминем към новите функции на PowerShell 5.0.

8 полезни функции

Осветяване на синтаксиса

Новата конзола е много по-лесна за навигация!

Червеният цвят и номерацията на редовете обаче са от друга опера.

Търсене в историята в две посоки

Клавишни комбинации: Ctrl + R и Ctrl + S
Кратки команди: Get-PSReadlineKeyHandlerИ Set-PSReadlineKeyHandler

Подобно на CMD, PowerShell има хронология на сесиите с навигация със стрелки, a Get-Historyпоказва журнал, подобен на F7. Пълен списък с клавишни комбинации, свързани с дневника, може да се покаже, както следва:

Get-PSReadlineKeyHandler | ? ($_.function -като "*hist*")

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


За разлика от Get-History, който съдържа историята на текущата сесия, тази история се поддържа глобално и се запазва, когато прозорецът се затвори.

Благодаря за съвета на Антон Дровосеков и Константин Сидякин от нашата VK група.

Създаване на връзки, символни и твърди връзки

Кратки команди: Нов продукт, Премахни артикул, Get-ChildItem

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

#Символна връзка към файла New-Item -ItemType SymbolicLink -Path C:\test\MySymLinkFile.txt -Target C:\test\1.txt #Symbolic link to the folder New-Item -ItemType SymbolicLink -Path C:\test \MySymLinkFolder -Target C:\Windows\ #Hard връзка към файл New-Item -ItemType HardLink -Path C:\Test\MyHardLinkFile.txt -Target C:\test\1.txt #Connection New-Item -ItemType Junction -Path C: \Temp\MyJunctionDir - Целеви C:\Windows

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

Iex "mklink /d C:\test\MySymLinkFolder C:\Windows"

Създаване на временен файл

Cmdlet: Нов-Временен файл

В скриптовете често трябва да създадете временен файл, за да пуснете някаква информация там. Само за това се създава нов cmdlet.

#Създайте временен файл New-TemporaryFile #Създайте временен файл и получете пълния му път $tmpfile = (New-TemporaryFile).Пълно име $tmpfile

Рядко правя чиста инсталация на основната система, но това се случва редовно на виртуални машини. И OneGet е много удобен за бързо автоматично инсталиране на ключов набор от програми.

Забележка.Можете да използвате този модул без да инсталирате WMF 5.0. Версия за предварителен преглед на модула за PS 4.0 и 3.0 е достъпна отделно - март 2016 г. и потърсете по-нови в центъра за изтегляне за PackageManagement PowerShell Modules Preview.

Инсталиране на програми

Този пример инсталира четири програми и пълен набор от помощни програми от хранилището Chocolatey. Първите три команди се изпълняват веднъж и промяната на правилата трябва да бъде потвърдена. Четвъртата команда тихо инсталира изброените програми, а петата просто спестява време.

#Разрешаване на инсталиране на подписани пакети от интернет Set-ExecutionPolicy RemoteSigned #Инсталиране на доставчика на Chocolatey Get-PackageProvider –Name Chocolatey -ForceBootstrap #Make Chocolatey trusted Set-PackageSource -Name Chocolatey -Trusted #Install programs Install-Package NotepadPlusPlus, vlc, firefox, filezilla, sysinternals -Verbose -Force -ProviderName chocolatey #Добавяне на път към изпълними файлове (sysinternals) към PATH setx PATH "$env:path;C:\Chocolatey\bin" -m

Доставчикът изтегля пакет в C:\Chocolatey\lib, който е базиран на скрипта chocolateyInstall.ps1. Той изтегля програмата за инсталиране на програмата от официалния уебсайт в папката %temp%\Chocolatey и я изпълнява в режим на тиха инсталация. Най-простият пример е Notepad++.

Install-ChocolateyPackage "notepadplusplus" "exe" "/S" "https://notepad-plus-plus.org/repository/6.x/6.9/npp.6.9.Installer.exe"

Програми за търсене

В хранилищата има много програми, всички най-популярни определено са там.

Find-Package "*zip*","*commander*" -ProviderName Chocolatey

Деинсталиране на програми

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

Деинсталиране на пакет - име на filezilla

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

Свързани връзки към OneGet и тиха инсталация:

  • Ръководство стъпка по стъпка за инсталиране на програми от PowerShell (Дмитрий Буланов)
  • Видове инсталатори и ключове за тиха инсталация (моята статия от 2005 г. е доста подходяща :)
  • Сайт за автоматично инсталиране на Windows и форум за автоматично инсталиране на програми

Дискусия и анкета

За опитни скриптери и системни администратори, PowerShell 5.0 има други интересни функции (например класове, подобни на обектно-ориентирани езици за програмиране). Можете да намерите пълния списък на тази страница на TechNet (връзката води конкретно към английската версия, тъй като руската все още не съдържа информация за 5.0).

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

за автора

Осветяването на синтаксиса в PowerShell 5.0 е модулът по подразбиране PSReadLine. В предишни версии можете да го инсталирате и да го добавите към зареждането в скрипта на профила (променлива $profile) или да го заредите сами, когато е необходимо

Модул за импортиране psreadline

Можете ли да ми кажете повече за тихата инсталация от скриптове? Неотдавна започнах да използвам chocolatey, много ми харесва, особено актуализирането на всички програми с една команда. Докато разбера тихата инсталация, настроих всичко на ръчен режим, команда-потвърди-инсталация.

6yHTapb

Единственото нещо, за което имах нужда от PowerShell в Win 10 досега, беше да заобиколя грешката с бутона „свойства“, който не работи в настройките за VPN връзка. Set-VpnConnection -Name "Name" -SplitTunneling $true.
Между другото, Вадим. Има ли информация за това? Говорим за бутон в свойствата на VPN връзката - мрежа - IP версия 4 - „свойства“. Там обикновено можете да премахнете отметката от квадратчето „използване на шлюз в отдалечена мрежа“. Самият бутон е активен, но при натискане нищо не се случва. Тук PowerShell дойде на помощ.

Сергей Рошчин

Благодаря ви много за Chocolatey
на windows 7, както разбирам, не работи?

Лекрон

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

За PowerShell... Мисля, че Microsoft са пропуснали целта с името. На пръв поглед не е ясно какво се е случило. Командна обвивка/процесор или език за програмиране на скриптове. Думата Shell предполага първото, но тогава е крайно време, тъй като е толкова готино, да го направите по подразбиране или поне да го рекламирате като основно. Но реалните случаи на употреба сочат повече към второто, замествайки WSH.

  • Лекрон: но тогава е крайно време, тъй като е толкова готино, да го направите по подразбиране или поне да го рекламирате като основен.

    В Win+X можете да замените CMD с PS (свойства на лентата на задачите - навигация). И отдавна го лансират като основен - в TechNet отдавна няма нищо ново за CMD, само PS.

    Разбира се, целевата аудитория са ИТ специалисти, но същото може да се каже и за CMD и WSH. Но не виждам никаква вреда за целевата аудитория на моя блог. Намирам приложение за PS у дома и на работа и не включва администриране.

    • Лекрон

      Не говоря за вреда. И за недоразуменията и съответните грешки.
      Какво е? Как го вижда Microsoft? Командният процесор, който обикновено работи в интерактивенрежим, който също Може би

      Да работиш интерактивно в един синтаксис и семантика и да пишеш последователности от действия в други е нелепо. Това е основният проблем. Толкова дълбоко, че дори вие не го забелязвате, въпреки че го споменахте индиректно в статията. Синтаксисът на mklink не е по-прост, но по-познат. Тъй като New-Item, с обединенисинтаксис, ви позволява да създавате много, много неща. И сега всъщност неговият синтаксис е по-прост от познаването на много отделни помощни програми, включително техните имена.

      Обещанието беше спазено - ето ви модул за управление на пакетни мениджъри, давайте.

      не разбрах Какво е „модул за управление на мениджър“?

        • Лекрон

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

          Функцията, както обикновено, е насочена към организации и MSI и MSU се поддържат напълно.

          Лекрон

          Може би не разбрах цялата дълбочина на тази функция, което е причината за такива глупави твърдения.
          Ще се нуждае ли потребителят от допълнителни стъпки, ако собственикът на хранилището/пакета смени доставчика? Или създателят на пакета ще промени настройките му? Или мениджърът на пакети се грижи за всичко това?

          Хм... ето една функция - вземете я, опитайте я, разберете я - тя ще помогне за решаването на някои въпроси. Има доставчик, той има пакети в хранилището. Премахнахте ли конкретен пакет? Тогава няма да можете да го изтеглите от този доставчик. Но пакетът, който вече е изтеглен, остава локално и може да се управлява допълнително.

          Лекрон

          Между другото, ето още един въпрос. Има ли команда Update-Package или още по-добре Update-AllPackage?

          Здравейте. Кажете ми, възможно ли е да възстановя зареждането или биоса и как да го направя? Буутлоудърът на Windows 7 Pro се срина. Вече промених настройките при зареждане, но Windows не иска да зарежда. Преди това Windows 8.1 беше представен в услугата, те инсталираха Windows 7 Pro без моето съгласие. Помогнете за решаването на проблема!

Алексей

Често съм чувал за шоколад и откакто ми беше спомнено, най-накрая реших да го опитам. резултатът не беше особено впечатляващ.

Масово инсталирах набор от софтуер, който вече е инсталиран на компютъра. само около 70% бяха намерени в хранилището.
ключове -y -accept-license -f -x - Пуших мана само за няколко минути, може би не съм разбрал нещо.
резултат:
софтуер, който не съм искал: autoIT, autohotkey. За какво?
изтеглих старата версия на Acrobat Reader DC, cheat engine;
не може да изтегли dropbox virtualbox;
тихият режим не работи viber, wireshark, лека сплав - трябваше да поставя отметки в квадратчетата и да натискам допълнително;
Skype премахна стария, но не инсталира новия.
и някои от преките пътища не са създадени, сега трябва да запомните кои.

Предупреждения:
- adobeader
- изглед от вятъра
- firefox
-notepadplusplus
— екипен зрител

Не разбирам какви са грешките тук.

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

  • Сергей

    PS C:\Users\Gerald> Find-Package "*paint.net*" -ProviderName Chocolatey Name Version Source Summary ---- ------- ------ ------- paint .net 4.0.6 chocolatey Paint.NET е софтуер за обработка на изображения и снимки, предназначен да се използва на компютри, които...

    Точно днес за първи път попаднах на споменаването на Chocolatey в Habrahabr и точно там във вашия бюлетин. Изглеждаше, че това е! Мислех, че ще има невероятна скриптова замяна за автоматичната инсталация на безплатен софтуер от ninite.com, но уви. Уместността на софтуера не се поддържа на параноично ниво и проблемите са тези, описани от участниците по-горе.

    Виталий

    Мисля, че философията на UNIX е по-подходяща за конзолата:


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

    • Виталий, Windows включва ли конзолна помощна програма за ZIP? Това се прави, за да се опростят скриптовете на PowerShell; няма нужда да влизате в CMD, интегрирана помощ и т.н.

      • Лекрон

        Защо да се занимавате с cmd, ако и двете черупки и двете трябва независимо да стартират изпълними файлове и да управляват техния вход/изход?
        Не възразявам срещу включването на такава функционалност, особено ако е направено разумно, като интерфейс към zlib, а не просто поредното раздуване на кодовата база - едно в explorer, друго в shell, трето в cmd .

        Виталий

        Не, не е включено.
        Но на моя хостинг, когато за първи път се опитах да използвам zip, получих нещо като „zip не е инсталиран. Инсталирайте с apt-get install zip."

        Отидете на cmd? По-горе беше казано, че PS трябва да изпълнява двоични файлове.

        Справка? В Linux командата man %util_name% или %utility_name% -?, първата дава подробно ръководство, втората като кратка справка за параметрите. Изглежда, че работи навсякъде.

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

        страфер

        Вадим Стеркин: Виталий, Windows включва ли конзолна помощна програма за ZIP?

        Неудобно ми е да попитам: нямаше ли да е по-лесно да го добавите, отколкото да добавите вградената функционалност?

  • Herz Mein

    > защо черупката трябва да работи с архиви, използвайки свои собствени средства?

    Ако има такава възможност, присъща на .Net класовете, тогава защо да не я използвате? Това е просто различен подход от bash или cmd, които са интерпретатори на командния ред. CLI. И PowerShell е по-скоро дебъгер за скриптове, IMHO.

    артем

    ЛекронКакво е? Как го вижда Microsoft? Командният процесор, който обикновено работи в интерактивенрежим, който също Може бичете команди от файл, наречен скрипт? Или като скриптов език, който има свой собствен REPL? Съгласни ли сте, че има голяма разлика?

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

    артем

    Вадим Стеркин:
    И отдавна го лансират като основен - в TechNet отдавна няма нищо ново за CMD, само PS.

    Скоро ще е, предполагам. CMD (самата обвивка) вече започна да се усъвършенства относително активно. Въпреки че преди това изобщо не са го докосвали десет години.

    артем

    ВиталийПишете програми, които правят едно нещо и го правят добре.

    Не виждам никакви противоречия. В PowerShell всяка cmdlet прави едно нещо (с много малко изключения). Който каже, че Expand-Archive може да записва DVD или да прави кафе - нека пръв хвърли камък по мен.

    ВиталийНапишете програми, които работят заедно.

    Тук PowerShell прави всички черупки, които познавам, защото... работи с обекти, а не с текст. Тези. „Съвместната работа“ (предаване на данни между кратки команди) е много по-ефективна. Няма нужда да губите време за разбор на текст и опити да обясните на следващия екип какво точно представлява този текст.

    ВиталийПишете програми, които поддържат текстови потоци, защото това е универсален интерфейс.

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

    Тоест PowerShell напълно следва горната философия.

    ВиталийНапример, защо да поставяте „Създаване на връзки, символни и твърди връзки“ в PS със собствен синтаксис, ако има mklink? Защо има „Създаване и разопаковане на архиви“, ако има zip и неговите аналози?

    Да, защото посочените командлети са „аналогични на zip“. Всъщност отговорът на това твърдение е много лесен. Просто трябва да осъзнаете, че кратки команди не са вградени възможности на обвивката, а по-скоро външни команди. И всичко веднага си идва на мястото. Нормално е да имаме команди за извършване на някои действия, нали? Това важи както за PowerShell, така и за всяка друга обвивка.

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

    • Лекрон

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

      Черупка - толкова много от тази дума... започна да се изкривява под влиянието на МС.
      През цялото време вярвах, че командите не зависят от средата за стартиране, а командите, вградени в средата, са необходими само за обслужване на възможностите на самата среда, а не на обекти на трети страни. Наистина ли греши?
      От тази гледна точка PS започва да прилича на ACDSee и Nero.

      Виталий

      Тук PowerShell прави всички черупки, които познавам, защото... работи с обекти, а не с текст. Тези. „Съвместната работа“ (предаване на данни между кратки команди) е много по-ефективна.

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

      Просто трябва да осъзнаете, че кратки команди не са вградени възможности на обвивката, а по-скоро външни команди. И

      Защо тогава тези командлети имат собствен синтаксис? Е, не изглежда, че това са външни команди.

      • артем

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

        Помощни програми на трети страни - не, разбира се. Но командлетите на трети страни са лесни. Бих казал, че около осемдесет процента от командлетите на трети страни работят доста добре с обекти.

        Ако няма cmdlet и трябва да стартирате помощната програма (изпълним файл), тогава, разбира се, трябва да му подадете текст като вход. Но е лесно да получите текст от обект (чрез разширяване на желаното свойство, например). Разбирам, че това звучи абсурдно, но след натрупване на критична маса опит се оказва, че е напълно интуитивно.

        Виталий: Защо тогава тези кратки команди имат собствен синтаксис? Е, не изглежда, че това са външни команди.

        Не мога да се съглася повече с това. "Не изглежда" е точната дума :)

        Както казах по-горе, PowerShell отнема известно време, за да свикнете. И сега ще кажа нещо гадно за нашите евангелисти и MVP, но злоупотребата с псевдоними (dir вместо Get-ChildItem, md вместо New-Item -ItemType “Directory”, знак за процент вместо Foreach-Object или question вместо Where-Object и т.н., както и пропускането на имената на параметрите в случай, че по подразбиране работи) само обърква неподготвените хора. Поради това, наред с други неща, ми отне години да свикна с PowerShell. Струва ми се, че ако всички примерни команди, публикувани в блогове и форуми, съдържаха пълния синтаксис, тогава новобранците биха изпитвали много по-малко анална болка.

    Всъщност използвам 2 варианта: внедряване на резервно копие, направено веднага след настройката на системата, или инсталиране на моя собствена сборка на Windows 7, където включвам всички необходими настройки и програми.
    А с Win10 просто още не съм усвоил мениджъра на пакети, въпреки че присъствието му предизвиква голям ентусиазъм.
    Преди това играех с различни мениджъри на пакети за Windows, но по една или друга причина всички те бяха неудобни по отношение на „време за учене“/„време за ръчно изтегляне“. Оказа се, че е по-лесно да направите своя собствена сборка, отколкото да създавате скриптове.

    Евгений Казанцев

    Прекрасно начинание, видях как с един скрипт се инсталират пакет от необходими програми, използвах ninite, не ме впечатли особено, сега използвам WPI, теглени от торенти, предимството им е, че има много повече и реално автоматична инсталация, минус това, че трябва да се доверите на автора на преопаковането.
    Едно нещо, което не разбирам, е как да АКТУАЛИЗИРАМ напълно автоматично инсталираните програми, което е основна основна характеристика на всеки мениджър на пакети? Как мога да накарам същия Notepad++ автоматично да се регистрира като приложение по подразбиране, без да навлизам в ужасно неудобните настройки „нови, те са модерни“? Как работи системата за зависимост и има ли я изобщо?

    Ами ако го проектирате като скрипт или функция? Например, така (без проверка за съществуване и без преобразуване в пълни пътища, което е необходимо):

    Param ( $create, $extract, $path, $zip) add-type -assembly system.io.compression.filesystem функция create-zip ($path, $zip) ( ::createfromdirectory($path, $zip)) функция extract-zip ($zip, $path) ( ::extracttodirectory($zip, $path) ) if ($create) ( create-zip $path $zip ) if ($extract) (extract-zip $zip $path)

    Обадете се съответно:

    .\test -c -p "C:\Some\Folder" -z "D:\Folder\out.zip" # За създаване.\test -e -p "C:\Some\Folder" -z "D: \Folder\out.zip" # За извличане

    • Какво общо има дизайнът? Вие използвате .NET класове директно във вашата функция. Командлетът елиминира необходимостта от достъп до класове. Това е разликата. Горе-долу същото като между програмист и IT специалист.

      артем

      Тролейбус, направен от един хляб.jpg

      Доколкото разбирам, никой не спори с факта, че функциите могат да правят каквото и да било :) Ползата очевидно е, че сега няма нужда да се пише отделна функция специално за това действие. Това означава, първо, че ще бъде по-лесно за хората да го използват (особено ако не знаят как да пишат функции или не могат да си позволят да ги импортират всеки път), и второ, ще има повече стандартизация. Това е несъмнена благословия. Съгласете се, глупаво е, когато пет скрипта изискват пет различни автора да разопаковат архиви и всеки решава този проблем малко по-различно. (Например, по едно време опцията чрез недокументирания COM обект на Windows Explorer беше популярна).

    Леша

    Работя на Windows и Mac и ако настроя сървър, тогава Linux. Преинсталирах OS X напълно няколко пъти, но всичко е просто - избрах датата в TimeMachine 10-15 минути и системата е готова.
    На Windows повечето ми програми са преносими, инсталирам само Chrome, защото иначе софтуерният пакет на Adobe не се актуализира, така че от CC версията се теглят през Cretive Cloud. Не виждам смисъл в изграждането на градина с автоматизация. PowerShell може и да е добър, но няма какво да автоматизирам на Windows, а за Linux и OS X има bash, който ползвам от доста време.
    Ако приятел ме попита „преинсталирайте Windows за мен, иначе нещо е бъгово“, аз инсталирам системата от външно устройство по моя „собствен“ начин и го оставям да инсталира останалото сам

  • Само автоматизация. Само PowerShell.

    Предговор

    Като хоби и когато имам време, преподавам на студенти в UKIT (бивш Московски държавен колеж по информационни технологии). В момента имам малко време да посветя на група студенти, но е достатъчно да подготвя публикация тук на Хабре.

    Работя като системен администратор в голяма не-ИТ компания с много ИТ ресурси. По вид дейност изглежда, че решава голям брой подобни задачи за обслужване на потребителите.

    Запознах се с езика PowerShell преди около две години, но се захванах сериозно с него едва година по-късно, без да осъзнавам първоначално огромните му възможности. В тази статия, на първо място, ще се съсредоточа върху тези, които искат да започнат да работят с PowerShell, но все още не му вярват или не знаят по какъв начин да подходят към това чудо.

    Предупреждение: PowerShell води до пристрастяване.

    Въведение

    Уикипедия ни казва:
    Windows PowerShell- разширяем инструмент за автоматизация от Microsoft, състоящ се от обвивка на командния ред и придружаващ скриптов език.

    Средата PowerShell може да изглежда като командния ред:


    powershell.exe

    Или като приложение:


    powershell_ise.exe

    Powershell_ise.exeнаречена интегрирана среда за скриптове - Windows PowerShell ISE. Позволява ви да работите с езика в удобна среда с подчертаване на синтаксиса, конструктор на команди, автоматично довършване на команди чрез натискане на TAB и други удобства. Идеален за създаване и тестване на скриптове.

    За да започнете средата powershell.exeили powershell_ise.exeПросто въведете същото име в реда за изпълнение.

    Файлът на скрипта PowerShell има разширението .ps1.

    Скриптът не може да се стартира с двоен LMB. Това се прави специално, за да не се навреди на системата от случайно стартиран скрипт.

    За да стартирате, щракнете с десния бутон и изберете „Изпълни с PowerShell“:

    В допълнение към факта, че има ограничение за стартиране на LMB скриптове, по подразбиране изпълнението на скриптове в системата е забранено, отново поради причината, описана по-горе - да не навреди на системата. За да проверите текущата политика за изпълнение, изпълнете командата:

    Get-ExecutionPolicy

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

    • Ограничен- Скриптовете не могат да се стартират;
    • AllSigned- Могат да се изпълняват само скриптове, подписани от доверен издател. Ще бъде поискано потвърждение, преди да стартирате скрипта на доверен издател;
    • RemoteSigned- Позволено е да изпълнява скриптове, създадени от нас, и скриптове, изтеглени, подписани от доверен издател;
    • Без ограничения- Без ограничения, всички скриптове могат да се изпълняват.

    За изпълнение и тестване намалете правилата до RemoteSignedкато изпълните командата:

    Set-ExecutionPolicy RemoteSigned

    Да започваме

    Cmdlet
    • Кратки команди са PowerShell команди, които съдържат различни функции;
    • Кратки команди могат да бъдат системни или създадени от потребителя;
    • Кратки команди са именувани според правилото глагол-съществително, което ги прави по-лесни за запомняне;
    • Кратки команди извеждат резултати като обекти или колекции от обекти;
    • Кратки команди могат както да получават данни за обработка, така и да предават данни през тръбопровод (повече за тръбопроводите по-късно);
    • Кратки команди не са чувствителни към главни и малки букви (можете да напишете get-process, Get-Process и GeT-pRoCeSs);
    • Не е необходимо да поставяте " след кратки команди ; ", освен когато изпълняваме множество кратки команди на един ред (Get-Process; Get-Services).

    Например, за да получим текущите процеси, ще изпълним командата:

    И получаваме резултата:

    Опитайте сами:

    Get-Service #за да получите състоянието на услугите, работещи на компютри

    Get-Content C:\Windows\System32\drivers\etc\hosts #за получаване на съдържанието на файл. В този случай файлът hosts

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

    Get-Help -Category cmdlet

    Ако използваме PowerShell ISE, ние правим процеса на разработка по-лесен.
    Просто въведете тире " - " след като сме въвели cmdlet, и ще получим всички възможни опции за параметри и техните типове:

    Опитвам:

    Get-Service -Име p*

    Ако обаче забравим какви свойства има този или онзи cmdlet, ще го изпълним Get-Member:

    Get-Process | Get-Member #Sign "|" наречена конвейер. За него по-долу.

    Няма достатъчно информация? Нека се обърнем към помощта за параметъра -Примери:

    Get-Help Get-Process -Примери

    Получаваме описание Get-Processи дори с примери за употреба:

    • Кратки команди могат да имат съкратени имена - псевдоними. Например, вместо Извикай помощможе да се използва просто Помогне. За да получите всички съкращения, стартирайте Get-Alias.

    Опитвам:

    Бележник за стартиране на процеса

    Което е подобно на писане:

    Стартирайте бележника

    Сега нека спрем процеса:

    Бележник за стоп-процес -име

    Spps - Бележник за имена

    Малко по-рано казахме, че cmdlet-ите се именуват според правилото глагол-съществително. Нека поясня, че глаголът не е задължително да бъде Вземете. Освен това, което можем да получим, можем да поискаме Комплект(не забравяйте, Set-ExecutionPolicy), стартирайте Започнете, Спри се Спри се, изход Навън, създайте Нови много други. Името на cmdlet не е ограничено до нищо и когато създадем свой собствен, можем да го кръстим както сърцето ни иска.

    Нека се опитаме да изведем във файл:

    „Здравей, Хабр!“ | Изходящ файл C:\test.txt & C:\test.txt

    Между другото, можете да го напишете така:

    „Здравей, Хабр!“ > C:\test.txt & C:\test.txt

  • Ново в сайта

    >

    Най - известен