Регион Телеком — личный кабинет
ООО «Регион Телеком» – оператор телекоммуникационных услуг в Иркутске и области. Сеть подключений помимо городов...
Уже прошло какое-то время с момента запуска окончательного релиза новейшей операционной системы от Microsoft и с ней уже успели познакомиться не только энтузиасты, тестирующие промежуточные сборки, а и те пользователи, которые загрузили долгожданное обновление. Хороша ли новая система или нет? Это новейший инновационный продукт или просто та «восьмерка», которая и должна была выйти в свое время? Это вопросы, на которые в любом случае не удастся дать однозначные ответ. Помимо очевидных нововведений, к коим относятся появившееся в системе меню «Пуск», браузер Microsoft Edge, совместимость с Xbox, интегрированный с Кортаной поиск и представление задач, есть еще ряд нововведений, о которых знает далеко не каждый пользователь Windows 10.
И вот к одному из таких нововведений можно отнести возможность установки программных продуктов непосредственно средствами оболочки Windows PowerShell, о чем и пойдет речь далее в этой статье. Несмотря на то, что эта функциональная возможность появилась еще в апреле 2014-го года вместе с выходом Windows Management Framework 5.0 Preview, нативной она смогла стать только с окончательным релизом «десятки». Итак, давайте же посмотрим, какой модуль отвечает за эту функциональную возможность и как можно проинсталлировать программные продукты, не загружая инсталляционные файлы.
Еще с выходом Windows Management Framework 5.0 Preview у командной оболочки Windows PowerShell появилось несколько новых возможностей, предназначенных для упрощения управления компьютерами. К таким возможностям относятся две занимательные технологии, а именно: Windows PowerShell Desired State Configuration и Certified for Windows Network Switches.
В случае с технологией Certified for Windows Network Switches – был добавлен ряд командлетов Windows PowerShell, отвечающих за управление сертифицированными для Windows сетевыми коммутаторами. То есть, появилось 19 новых командлетов, которые вы можете найти, выполнив в оболочке PowerShell команду «Get-Command *-NetworkSwitch*». Так как технология достаточно серьезная и заслуживает отдельного внимания, в данной статье я ограничусь лишь небольшим описанием и не буду рассматривать эту технологию более подробно.
А вот на второй технологии следует остановиться подробнее. В случае установки Windows Management Framework 5 или операционной системы Windows 10 вы можете воспользоваться средством, позволяющим существенно упростить на ваших компьютерах поиск и установку программного обеспечения. Таким средством является OneGet. OneGet – это агрегатор управления пакетами, то есть модуль, использующий специальные репозитории, предоставляющий единый интерфейс для обнаружения, установки и инвентаризации программного обеспечения. Иначе говоря, эта технология с одной стороны предоставляет набор командлетов, позволяющих конечному пользователю управлять инсталляционными пакетами (о которых мы с вами будем говорить немного ниже), а с другой стороны она предоставляет интерфейс для написания пакетов поставщиков.
Прежде чем мы с вами начнем разбираться с самим модулем, следует обратить внимание на несколько определений, которые тесно связаны с этой технологией, а именно:
Изначально Microsoft ограничивает использование большинства доступных поставщиков, предоставляя базовый набор, позволяющий обнаружить и установить дополнительные поставщики для управления программным обеспечением. Среди базовых поставщиков можно выделить:
Полный список поставщиков OneGet с их кратким описанием вы можете найти по следующей ссылке .
Сам модуль OneGet включает в себя 10 командлетов Windows PowerShell, большинство которых будут рассмотрены в следующем разделе настоящей статьи. К этим командлетам относятся:
Вот и настало время самого процесса установки программных продуктов. Далее вы увидите, как можно установить поставщик пакетов, найти требуемое программное обеспечение, установить его, а также как можно удалить ненужное приложение и загрузить себе на компьютер инсталляционный пакет программного продукта. Начнем по порядку.
Теперь мы можем сгенерировать полный список всех доступных в поставщиках пакетов и передать его по конвейеру командлету Export-CliXML для создания XML-представления объектов и их сохранения в XML-файле. Учтите, что экспортируемый вами список будет постоянно меняются и со временем все больше и больше пакетов будут добавляться в используемые вами репозитории. Соответственно, не забывайте время от времени заменять экспортируемый вами файл. Для того чтобы выполнить экспорт списка пакетов и сохранить этот список в папке C:\TestPosh вам нужно выполнить следующую команду: Find-Package | Export-CliXML C:\TestPosh\Test.xml
Учтите, что процедура экспорта обязательно займет у вас какое-то время. После того как команда закончит выполняться и у вас на компьютере будет создан XML файл, импортируйте его и, для удобства просмотра, при помощи конвейера и команды GridView , отвечающей за отображение результатов выполнения команды в окне в виде интерактивной таблицы, можете посмотреть, какие пакеты будут доступны для установки. Естественно, этот список пакетов вы можете открыть при помощи любого приложения, которое способно обрабатывать XML файлы, например, средствами того же Excel. Данная команда, как вы видите на следующей иллюстрации, выглядит следующим образом: Import-CliXML С:\TestPosh\Test.xml | Out-GridView
Так как поставщик уже установлен, можно переходить к следующей части данной процедуры, а именно к
Прежде чем устанавливать программные продукты нам следует посмотреть, что же уже установлено на компьютере. Для выполнения этой задачи вы можете воспользоваться командлетом Get-Package , который возвращает список всех пакетов программного обеспечения, установленных на локальном компьютере как с помощью OneGet, так и другими средствами инсталляции приложений. При желании вы также можете запускать командлет Get-Package и на удаленных компьютерах, запустив его как часть Invoke-Command, команды Enter-PSSession или скрипта.
В том случае, если вы хотите получить информацию по конкретному программному обеспечению, например, по установленным продуктам Microsoft Office 2013, вы можете наряду с данным командлетом использовать параметр –Name с соответствующим значением, например, Get-Package -Name «office 2013» . Выходные данные этого командлета видны ниже:
Перед инсталляцией программного обеспечения попробуем определиться с тем, что же нам нужно установить. Так как на машине установлен только офис 2013 и еще несколько приложений, далее я вам покажу, как можно установить такие программные продукты, как Adobe Creative Cloud, Adobe Reader, Notepad++, а также Process Explorer, Process Monitor и WinRar.
Ввиду того, что до самого процесса инсталляции нам нужно сами пакеты локализовать, следует воспользоваться возможностями командлета Find-Package . Как вы уже заметили немного ранее, данный командлет позволяет выполнять поиск инсталляционных пакетов в доступных на локальном компьютере источниках пакетов. В том случае, если вы не будете использовать с данным командлетом какие-либо параметры, вам будет выведен командой полный список всех приложений, как было заметно ранее.
Например, для начала попробуем найти приложения Adobe, которые доступны для инсталляции из добавленного нами поставщика Chocolatey. Для этого достаточно помимо самого командлета указать параметр –Name и в качестве его значения ввести искомый программный продукт. Так как после слова Adobeу инсталляционных пакетов может быть указано имя продукта, следует ввести имя продукта следующим образом: Adobe* , как показано на следующей иллюстрации. Как вы видите, модуль OneGet обнаружил в репозитории следующий инсталляционный пакет: adobe-creative-cloud версии 1.0. В принципе, это один из искомых продуктов, а это значит, что его следует проинсталлировать. Для этого, как также можно заметить на следующей иллюстрации, нужно воспользоваться возможностями командлета Install-Package . Чтобы установить Creative Cloud выполняется следующая команда Install-Package -Name adobe-creative-cloud –Force , где параметр Force, как принято в PowerShell, переопределяет ограничения, препятствующие выполнению команды до тех пор, пока изменения не начнут нарушать требования безопасности. Выходные данные этих команд можно увидеть на следующей иллюстрации:
Теперь, после того как первый программный продукт был установлен попробуем выполнить поиск определенной версии Adobe Reader. Для этого помимо уже известной команды Find-Package –Name AdobeReader следует добавить параметр –AllVersions , который возвращает все доступные версии пакета, или все версии пакета, которые находятся в диапазоне, указанном в параметрах MinimumVersion и MaximumVersion . Обратите внимание на то, что этот параметр не является обязательным, так как изначально поиск отображает свежайшую версию программного продукта. Теперь из всех доступных версий нам следует выбрать ту, которая должна быть проинсталлирована на компьютере, например, пусть это будет версия 2015.007.20033 . для того, чтобы установить именно эту версию ридера, следует для команды Install-Package -Name AdobeReader добавить параметр –RequiredVersion со значением 2015.007.20033 , который определяет точную версию пакета, который вы хотите установить. Также вы можете установить максимально доступную версию продукта, добавив параметр MaximumVersion с соответствующим значением. Вывод этих команд виден на следующей иллюстрации:
Если вам нужно установить свежайшую версию программного продукта и в то же время вы не хотите вводить в оболочке PowerShell несколько команд, вы можете обобщить поиск и установку пакета при помощи конвейера. Например, в случае с установкой последней версии текстового редактора Notepad++ вы можете выполнить следующую команду: Find-Package -Name NotepadPlusPlus | Install-Package –Force . Таким образом, вы выполняете поиск пакета в репозитории и в случае нахождения результата сразу инсталлируете его в тихом режиме. Процесс выполнения установки этого программного продукта виден ниже:
Теперь, так как согласно указанному выше заданию осталось установить еще Process Explorer, Process Monitor и WinRar, попробуем установить сразу несколько программных пакетов. Для этого желательно точно знать, как называются эти пакеты в самом репозитории. Как я уже писал ранее, это можно проверить при помощи командлета Find-Package | Out-GridView . После того как будут известны имена пакетов можно заняться самой установкой. Для этого вы можете выполнить следующую команду: Find-Package -Name procexp, procmon, winrar | Install-Package . В данном примере, как видно на следующей иллюстрации, я специально не указываю параметр Force , чтобы вы могли обратить внимание на весь процесс установки нескольких программных пакетов одновременно.
Последние два командлета, которые будут рассмотрены в этой статье отвечают за сохранение инсталляционного пакета и удаление проинсталлированной программы. Начнем с сохранения.
Для того чтобы сохранить инсталляционный пакет можно воспользоваться очередным командлетом модуля OneGet, а именно модулем Save-Package . Данный командлет позволяет сохранить пакеты на локальном компьютере без их последующей установки. По умолчанию данный командлет сохраняет последнюю версию программного продукта, однако если вы к текущему командлету добавите параметр AllVersions , у вас на компьютере будут сохранены все размещенные в репозитории версии выбранной вами программы. Более того, аналогично параметрам командлетов поиска и установки программ, помимо сохранения всех версий, при помощи параметров -MaximumVersion и –MinimumVersion , вы еще можете выбрать диапазон версий пакета, который желаете сохранить. Чтобы сохранить пакет на своем компьютере, помимо параметра Name и, в случае необходимости, параметра, отвечающего за версию продукта, вы должны указать параметр Path с будущим расположением вашего инсталлятора.
Как видно на следующей иллюстрации, команда Save-Package –Name Procexp –Path C:\TestPosh сохранит последнюю версию Process Explorer в папке C:\TestPosh:
Если вы случайно установили не тот пакет, вы всегда можете при помощи модуля OneGet его удалить. Для этого используется командлет Uninstall-Package . Как и в случае с остальными командлетами данного модуля, для удаления программы вам нужно указать параметр Name с соответствующим именем приложения, а также, для тихого удаления, вы можете использовать параметр Force. Например, чтобы удалить с компьютера установленный ранее WinRAR вам нужно выполнить следующую команду: Uninstall-Package –Name WinRAR –Force , как показано ниже:
Из этой статьи вы узнали об одной из особенностей новой операционной системы от Microsoft, а именно об инсталляции программных продуктов средствами командной оболочки Windows PowerShell. Я вам рассказал о самом модуле OneGet, об основной терминологии, используемой наряду с этой технологией и о том, какие существуют предустановленные поставщики пакетов. Вы узнали о том, как можно подключить к OneGet сторонний поставщик пакетов и как при его помощи можно находить, устанавливать, сохранять и удалять программные продукты.
Надеюсь, что данная информация была для вас полезной и вы узнали для себя что-то новое. Если у вас возникли вопросы по материалу данной статьи – задавайте их в комментариях, буду рад оказать любую помощь.
VN:F
Rating: 9.9/10 (18 votes cast)
Установка программ средствами PowerShell в Windows 10 , 9.9 out of 10 based on 18 ratingsСегодня я покажу, как установить и использовать модуль администрирования Active Directory для Windows PowerShell. Командлеты этого модуля можно использовать для получения информации и управлением различными объектами и параметрами AD. Данный модуль в серверных ОС устанавливается в виде отдельного компонента. На десктопные ОС (Windows 10, 8.1, 7) придется установить пакет Remote Server Administration Tools (RSAT) в состав которого входит модуль для взаимодействия с AD из PowerShell. Кроме этого модуля в состав RSAT входят все необходимые графические оснастки управления, утилиты командной строки и модули Windows PowerShell для администрирования Windows и AD. Данный пакет для вашей версии ОС нужно самостоятельно скачать с сайта Microsoft.
Модуль Active Directory для Windows PowerShell впервые появился в Windows Server 2008 R2. Он автоматически устанавливается на . Для использования комадлетов PowerShell из модуля AD в домене должен быть хотя бы один контроллер с Windows Server 2008 R2 или выше. Если в вашей сети имеются DC только с Windows Server 2003 и 2008, необходимо скачать и установить Active Directory Management Gateway Service. Командлеты PowerShell из модуля Active Directory взаимодействуют с веб-сервисом, который является частью контролера домена с ролью ADDS.
Вы можете установить модуль Active Directory для Windows PowerShell не только на контроллер домена, но и на любой рядовой сервер домена или рабочую станцию. В Windows Server 2016 установить модуль Active Directory для Windows PowerShell можно из графической консоли Server Manager с помощью мастера добавления ролей и компонентов. Достаточно запустить мастер и на этапе выбора компонентов нужно выбрать пункт Средства удаленного администрирования сервера -> Средства администрирования ролей -> Средства AD DS и AD LDS -> Модуль Active Directory для Windows PowerShell (Remote Server Administration Tools > Role Administration Tools > AD DS and AD LDS Tools ->Active Directory module for Windows PowerShell).
Данный модуль можно установит и с помощью PowerShell. Откройте консоль PowerShell с правами администратора и выполните команды:
Import-Module ServerManager
Add-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
В Windows 10, Windows 8.1 и Windows 10 для установки модуля RSAT-AD-PowerShell нужно сначала установить соответствующую версию RSAT, после этого модуль нужно включить в Панели управления (Панель управления -> Программы ->Программы и компоненты и нажмите «Включить компоненты Windows» -> Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> включите компонент Active Directory Module for Windows POwerShell.
Либо можно установить модуль с помощью PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
В Windows 7 и Windows Server 2008 R2, на которых установлен PowerShell 2.0, чтобы начать пользоваться модулем AD необходимо импортировать его в сессию PowerShell командой:
Кроме того, вы можете экспортировать модуль с удаленной машины, где он уже установлен и импортировать его в свою сессию PowerShell:
$MySession = New-PSSession -ComputerName MyDomainController
Export-PSsession -Session $MySession -Module ActiveDirectory -OutputModule RemoteADPosh
Remove-PSSession -Session $MySession
Import-Module RemoteADPosh
В Windows Server 2012 R2/ 2016 и Windows 8.1 / Windows 10 модуль (если он установлен) импортируется в сессию автоматически.
Если компьютер включен в домен, по умолчанию создается диск по имени AD:. .Вы можете перейти на этот диск командой CD и использовать привычные команды работы с файловой системой для навигации по этому диску. Пути представлены в формате X500.
PS C:\> cd AD:
PS AD:\> dir
…
PS AD:\> cd "DC=vmblog,DC=ru"
Вывести список доступных командлетов модуля для работы с Active Directory можно так:
Get-Command -Module ActiveDirectory
В различных версия Windows доступно разное количество командлетов:
Итак, теперь вы можете использовать командлеты PowerShell для администрирования AD. На нашем сайты вы можете познакомиться с использованием следующих командлетов из модуля AD для PowerShell: , .
Привет. =)
Очередная богомерзкая статья про администрирование Windows Server посвящена первоначальной подготовке ОС к использованию. Избалованный тем, что в базовой версии Windows Server с GUI (Graphical user interface
), а так же в Windows Server 2012 Core и выше, Powershell уже установлен, я был весьма сильно озадачен тем, что в Windows Server 2008R2 Core им и не пахнет. Т.к. уставновка не была сильно очевидной и мне пришлось полазить по гуглу и технету, я решил набросать небольшую заметку на будущее.
Итак, сперва мы получим в свое распоряжение хотя бы PowerShell 2.0 (на самом деле этот шаг можно и пропустить, сделав всё нижеописнное в cmd, но я начал с этого). Сделать это можно двумя путями: запустив утилиту sconfig.cmd в командной строке или через DISM (Deployment Image Servicing and Management ) там же. Первая предлагает нам псевдографический интерфейс, где под пунктом 4 мы и найдем возможность установить PS 2.0.
Через DISM это делается следующим образом:
dism.exe /online /enable-feature:MicrosoftWindowsPowerShe ll
Установив PS, перезагрузившись и получив в свое распоряжение чуть более адекватный инструмент мы попытаемся обновить его до актуальной версии. На момент написания статьи ей является версия 4.0 или же preview-версия 5.0. Для меня минимально пригодной к применению является версия 3.0, в которой уже есть множество командлетов для управления ролями и ресурсами сервера, которые отсутствуют во второй версии. Windows PowerShell 3.0 требует наличия в системе.Net Framework 4.0 и выше.
Если попытаться сейчас установить.Net 4.0, мы узнаем, что для этого нам необходим уже установленный.Net 2.0, который почему-то отсутствует в редакции Server Core. Забавно, но по привычке скачав инсталлятор и запустив его, мы получим отказ в установке и замечение о необходимости использования dism.exe. >_< OK, dism, так dism. Уставливается по аналогии с PS:
dism.exe /online /enable-feature:NetFx2-ServerCore
dism.exe /online /enable-feature:NetFx2-ServerCore-WOW64
Следующим шагом будет обновление.Net Framework до актуальной версии. Хотите использовать Powershell 3.0, ставьте.Net 4.0, а хотите последнию версию, потребуется.Net 4.5.1 и выше. Выбор за вами, его установка предельно проста. Загвоздка может быть лишь в получении пакета инсталлятора - я подключал к серверу сетевой диск, на который выкладывал все установочные файлы; вы можете использовать любой для вас удобный носитель информации.
Итак, мы подготовили базу для установки PS версии 3.0 и выше. Следующим шагом будет загрузка инталлятора Windows Management Framework и его установка. Скачиваем и запускаем KB2819745 нужной нам архитектуры:
Традиционно, после установки нам потребуется перезагрузка, выполнив её, мы получим в своё распоряжение PowerShell 4.0.
Кстати, чтобы иметь возможность пользоваться командлетом Add-WindowsFeature (переименован в Install-WindowsFeature в Windows Server 2012) для настройки ролей сервера, потребуется уставнока компонентов Server Manager через всё тот же DISM.EXE. Выглядит это так:
dism.exe /online /enable-feature:ServerManager-PSH-Cmdlet s
Вообще, я сильно избалован последними версиями PS, т.к. занялся им уже после выхода третьей версии, но как оказалось, для установки ролей можно ограничиться и dism.exe. А если вы не знаете названия нужной вам фичи, то всегда можно поглядеть все доступные варианты и их состояние через параметр /get-features. Но как по мне, так Get-WindowsFeature гораздно информативнее. =)
dism.exe /online /get-features
vs. Get-WindowsFeature
0
Применимо к:
Office 365 for professionals and small businesses, Office 365 for enterprises, Live@edu
Windows XP, Windows Vista, Windows Server 2003, windows 7 и Windows Server 2008
Перед началом использования Windows PowerShell следует убедиться в том, что на компьютере установлены и настроены правильные версии Windows PowerShell и службы удаленного управления Windows (WinRM). Необходимо использовать среду управления Windows Management Framework, включающую правильные версии Windows PowerShell v2 и WinRM 2.0.
Если компьютер работает под управлением системы Windows 7 или Windows Server 2008 R2, ничего устанавливать не требуется. Среда Windows Management Framework уже установлена.
Загрузить и установить среду Windows Management Framework можно при условии, что компьютер работает под управлением одной из следующих операционных систем:
Windows Vista с пакетом обновления 1 (SP1) или 2 (SP2);
Windows Server 2008 с пакетом обновления 1 (SP1) или 2 (SP2);
Windows Server 2003 с пакетом обновления 2 (SP2);
Windows XP с пакетом обновлени 3 (SP3).
Приступим к работе:
Перед установкой среды Windows Management Framework нужно удалить все имеющиеся версии Windows PowerShell.
В группе «Программы» панели управления откройте раздел «Программы и компоненты» и удалите все экземпляры Windows PowerShell, присутствующие в списке установленных программ. Например, CTP-версия Windows PowerShell v2 может отображаться как «Windows PowerShell (TM) V2».
В разделе «Задачи» выберите пункт «Просмотр установленных обновлений» и удалите все экземпляры Windows PowerShell, присутствующие в списке установленных обновлений. Например, версия Windows PowerShell V1 может отображаться как обновление Windows с одним из следующих номеров статей в базе знаний Майкрософт:
Запустите диспетчер сервера и откройте раздел «Компоненты».
Выберите пункт «Удалить возможности».
Выберите значение Windows PowerShell и следуйте инструкциям по удалению.
На панели управления в группе «Программы» откройте элемент «Программы и компоненты» и удалите все экземпляры Windows PowerShell, находящиеся в списке установленных программ.
В группе «Задачи» выберите элемент «Просмотр установленных обновлений». Удалите все экземпляры Windows PowerShell, присутствующие в списке установленных обновлений.
Откройте в панели управления компонент «Установка и удаление программ» и удалите все экземпляры Windows PowerShell, присутствующие в списке установленных программ.
В разделе «Установка и удаление программ» выберите команду «Показать обновления». Удалите все экземпляры Windows PowerShell, присутствующие в списке установленных обновлений. Например, версия Windows PowerShell V1 может отображаться как обновление Windows со следующим номером статьи в базе знаний Майкрософт: KB926139.
Перед установкой среды Windows Management Framework необходимо удалить все имеющиеся версии WinRM.
В группе «Программы» панели управления откройте раздел «Программы и компоненты» и удалите все экземпляры службы удаленного управления Windows, присутствующие в списке установленных программ.
В группе «Задачи» выберите элемент «Просмотр установленных обновлений». Удалите все экземпляры службы удаленного управления Windows, присутствующие в списке установленных обновлений. Например, CTP-версия WinRM 2.0 может отображаться как «WindowsRemoteManagement» с одним из следующих номеров статей в базе знаний Майкрософт:
Откройте в панели управления компонент «Установка и удаление программ» и удалите все экземпляры службы удаленного управления Windows, присутствующие в списке установленных программ.
В разделе «Установка и удаление программ» выберите команду «Показать обновления». Удалите все экземпляры службы удаленного управления Windows, присутствующие в списке установленных обновлений. Например, WinRM может отображаться как обновление Windows со следующим номером статьи в базе знаний Майкрософт: KB936059.
Загрузите и установите среду Windows Management Framework . Выберите содержащий Windows PowerShell v2 и WinRM 2.0 пакет, подходящий для используемой операционной системы, системной архитектуры и языка.
После установки WinRM и Windows PowerShell настройте программное обеспечение так, чтобы оно правильно работало, согласно описанию в следующих шагах.
Примечание
Последовательно выберите пункты «Пуск», «Все программы», «Стандартные», Windows PowerShell.
Чтобы открыть Windows PowerShell, выполните одно из следующих действий:
При работе в системе Windows Vista, Windows 7 или Windows Server 2008 R2 щелкните правой кнопкой мыши пункт «Windows PowerShell» и выберите команду «Запуск от имени администратора». При появлении приглашения службы контроля учетных записей с запросом на продолжение нажмите кнопку «Продолжить».
При работе в системе Windows XP или Windows Server 2003 щелкните пункт «Windows PowerShell».
Выполните следующую команду:
Get-ExecutionPolicy
Если возвращенное значение отличается от RemoteSigned , необходимо изменить значение на RemoteSigned .
Примечание
Если задана политика выполнения сценариев RemoteSigned , то запускать можно только сценарии, созданные на компьютере пользователя или подписанные надежным источником.
В открытом от имени администратора сеансе Windows PowerShell выполните следующую команду:
Set-ExecutionPolicy RemoteSigned
Последовательно выберите «Пуск», «Все программы», «Стандартные».
Выполните одно из следующих действий, чтобы открыть командную строку:
При работе в системе Windows Vista, Windows 7 или Windows Server 2008 R2 щелкните правой кнопкой мыши пункт «Командная строка» и выберите команду «Запуск от имени администратора». При появлении приглашения службы контроля учетных записей с запросом на продолжение нажмите кнопку «Продолжить».
При работе в системе Windows XP или Windows Server 2003 выберите пункт «Командная строка».
В командной строке выполните следующую команду:
winrm get winrm/config/client/auth
Примечание
Если служба WinRM уже работает, запускать ее не требуется. Состояние службы WinRM можно проверить, запустив команду sc query winrm .
В результатах найдите значение Basic = . Если указано значение Basic = false , то его необходимо изменить на Basic = true .
Примечание
Если служба WinRM запущена и значение Basic изменять не требуется, выполните команду net stop winrm , чтобы остановить службу WinRM.
В открытом от имени администратора окне командной строки выполните следующие команды: Значение в фигурных скобках { } вводится с учетом регистра:
winrm set winrm/config/client/auth @{Basic="true"}
Проверьте наличие значения Basic = true в выходных данных команды.
Примечание
Если служба WinRM запущена, выполните команду net stop winrm , чтобы остановить ее.
Следующее действие .
Windows PowerShell - это оболочка командной строки и скриптовый язык с большими возможностями и красивым синтаксисом, предназначенный для системного администрирования. Windows PowerShell отличное средство для управления и автоматизации администрирования ОС Windows, а также приложений, работающих под управлением Windows.
Я был ярым поклонником vbs-скриптов. Так как заметил, что для тех задач, для которых ранее использовал Delphi, вполне годится скриптовый язык сценариев vbs. Ведь это намного удобней просто открыть блокнот, накидать туда несколько строк, сохранить файл с нужным расширением и запустить скрипт. Для этого не нужно ничего устанавливать, как например Delphi, который к тому же платный.
Хоть vbs неплох, но его преемник PowerShell имеет куда более широкий функционал.
У меня есть vbs-скрипт, который автоматически публикует изображения на одном из блогов. Возникла необходимость выравнивать изображение по ширине или высоте, в зависимости от разрешения добавляемого изображения. И вот я не смог получить разрешение изображений с помощью vbs-скрипта, а вот через PowerShell это делается очень просто.
Если начиная с ОС Windows 7 PowerShell идет в комплекте с самой Windows , то в Windows XP его нужно скачать и установить - скачать PowerShell V2 для Windows XP SP3 .
5-ю версию Powershell можно скачать по ссылке: microsoft.com , там же расписано какой файл для нужной ОС качать и как установить.
По умолчанию Windows не даст запустить PowerShell-скрипты из-за соображений безопасности. Необходимо разрешить выполнение локальных скриптов. Выполните команду в консоли (она разрешит запускать локальные скрипты и скачанные скрипты подписанные доверенным сертификатом):
powershell -Command Set-ExecutionPolicy RemoteSigned
Иначе при попытке запустить свой скрипт вы увидите вот такой текст:
Не удается загрузить файл C:\ImageSize.ps1, так как выполнение скриптов запрещено для данной системы. Введите "get-help about_signing" для получения дополнительных сведений.
+ CategoryInfo: NotSpecified: (:) , ParentContainsErrorRecordException
+ FullyQualifiedErrorId: RuntimeException
Чтобы вернуть эту политику безопасности обратно, напишите:
powershell -Command Set-ExecutionPolicy Restricted
Чтобы разрешить запускать любые скрипты, без проверки подписи, напишите:
powershell -Command Set-ExecutionPolicy Unrestricted
Если при запуске скрипта вы наблюдаете такое сообщение:
Security Warning Run only scripts that you trust. While scripts from the Internet can be useful, this script can potentially harm your computer. Do you want to run \server\scripts\my.ps1? [D] Do not run [R] Run once [S] Suspend [?] Help (default is "D"): d
И хотите от него избавиться, то при запуске скрипта используйте параметр -ExecutionPolicy Bypass
Powershell -ExecutionPolicy Bypass -file "\\server\scripts\my.ps1"
Введите в командной строке команду
Powershell -File your-script-name.ps1
Где your-script-name.ps1 - имя вашего скрипта. Файлы PowerShell-скриптов имеют расширение *.ps1
В PowerShell есть различные командлеты для получения той или иной справки. Но наиболее важный из них это: Get-Help
Введите в консоли команды:
powershell -command Get-Help
powershell -command Get-Help -?
И получите два различных описания, которые дополняют друг-друга, того как пользоваться справкой.
Возможности справки достаточно обширны, с примерами и детальным описанием на русском языке. Потому можно выводить ее в различных форматах.
Например:
winintro.ru/windowspowershellhelp.ru/ - справка в виде html-книги
По умолчанию операторы сравнения не являются чувствительными к регистру.
Для сравнения с учетом регистра к команде подставляется префикс "c". Для примера, оператор -eq с зависимостью от регистра изменяется на "-ceq".
Для явно заданного независящего от регистра сравнения к команде подставляется префикс "i". Пример: оператор -replace без зависимости от регистра будет -ireplace
Логические операторы PowerShell:
$myVar -is "String" $myVar -eq 123 $myVar -ceq $myVar2 "abcdef" -like "abc*" "abcdef" -replace "dEf","xyz" $myVar1 -is "String" -and $myVar2 -is "Int" (1 -eq 1) -and -not (2 -gt 2)
$home
– каталог пользователя
$NULL
– пусто
$true
– истина
$false
– лож
$DebugPreference
– “Continue” выводить отладку, “SilentlyContinue” не выводить отладочную информацию. См. команду Write-Debug
Найти все файлы с определенным расширением расширением в каталоге и подкаталогах.
Затем скопировать эти файлы в другой каталог.
$flist = get-childitem e:\doc\* -include *.pdf -recurse $flist | ForEach-Object{$_.CopyTo("e:\doc\all_pdf\" + $_.PSChildName)} ls d:\ | ?{$_.psiscontainer} | select fullname #Показать только каталоги ls d:\ | ?{!$_.psiscontainer} | select fullname #Показать только файлы $local = Get-Location #Текущий каталог $local.Path # Рабочий каталог $local.Drive.Root # Корень $local.Drive.Name # Буква диска $local.Drive.Used # Использовано диска $local.Drive.Free # Свободно на диске
Вывод полных имен файлов на диске D: которые изменялись в промежутке времени от 1 июня 2014-го года до 20 сентября 2014-го года:
Ls d:\ -recurse | ?{!$_.psiscontainer} | select fullname,LastWriteTime | Where-Object { $_.LastWriteTime -ge "06/01/2014" -and $_.LastWriteTime -le "09/20/2014"}
# текст на который надо обратить внимание. Выделяется желтым. Write-Warning("Текст требующий внимания") # Просто выводит текст Write-Host("Просто текст") #включили вывод отладочной информации $DebugPreference = "Continue" # вывели отладочную информацию Write-Debug "Cannot open file." # отключили отладочную вывод отладочной информации $DebugPreference = "SilentlyContinue"
$i++ - в момент вызова i имеет старое значение, но после увеличивается на 1++
++$i - в момент вызова i увеличивается на 1
Ждем нажатия любой клавишы:
$HOST.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | OUT-NULL $HOST.UI.RawUI.Flushinputbuffer() $host.ui.RawUI.WindowTitle = "elimS Window Title" #задаем заголовок окна
Наиболее распространенные типы:
Fixed-length string of Unicode characters A Unicode 16-bit character An 8-bit unsigned character 32-bit signed integer 64-bit signed integer Boolean True/False value A 128-bit decimal value Single-precision 32-bit floating point number Double-precision 64-bit floating point number Date and Time Xml object An array of values Hashtable object
Еще есть такие встроенные константы: $true,
$false, $nullUnicode: To encode a Unicode character in a PowerShell string, prefix the unicode with 0x and cast it to System.Char:
PS > 0x263a ☺
To force a conversion to a specific datatype, prefix the value or variable with the type in square brackets, this is known as a Cast Operator and forces the chosen datatype:
PS C:\> "0064" 64 PS C:\> $false 0 PS C:\> ("0x" + "FF") 255
PS C:\> 32 -is
True PS C:\> $true -is
True
Еще по поводу того, как передавать множество параметров в функцию:
Sort-Object - сортирует объекты по возрастанию или по убыванию на основе значений свойств объектов. Можно задать одно свойство или несколько свойств (сортировка по нескольким ключам), а также выбрать сортировку с учетом или без учета регистра. Кроме того, можно сделать так, чтобы командлет Sort-Object выводил только объекты с уникальными значениями того или иного свойства.
Copy-Item - копирует элемент из одного местоположения в пространстве имен в другое. Командлет Copy-Item не удаляет копируемые элементы. Типы элементов, которые может копировать командлет, определяются наличием поставщиков Windows PowerShell. Например, при использовании командлета с поставщиком FileSystem копируются файлы и папки, а при работе с поставщиком реестра копируются разделы и записи реестра.
Move-Item - перемещает элемент, включая его свойства, содержимое и дочерние элементы, из одного местоположения в другое. Оба заданных местоположения должны поддерживаться одним и тем же поставщиком. Например, можно переместить файл или вложенный каталог из одного каталога в другой либо переместить подраздел реестра из одного раздела в другой. При перемещении элемента он удаляется в исходном местоположении и создается в новом.
Remove-Item - удаляет один и более элементов. Данный командлет поддерживается многими поставщиками, поэтому он может удалять элементы различных типов, включая файлы, каталоги, разделы реестра, переменные, псевдонимы и функции.
Get-ChildItem - получает элементы из заданных местоположений. Если элемент является контейнером, данный командлет получает из контейнера элементы, которые называются дочерними элементами. Для извлечения элементов из всех дочерних контейнеров можно использовать параметр Recurse. Местоположение может являться расположением в файловой системе, например каталогом, либо расположением, предоставляемым другим поставщиком, например кустом реестра или хранилищем сертификатов.
-ErrorAction - параметр присутствует во всех командлетах, позволяет задать действие выполняемое при возникновении ошибки:
Пример: Copy-Item "d:\test1\klbackup*" "d:\test2\" -ErrorAction stop
-WhatIf - отображает сообщение, в котором описан результат команды, без фактического ее выполнения. Присутствует во всех командлетах.
get-help about_CommonParameters - описание параметров, которые могут использоваться с любым командлетом.
Пример того, как можно работать через SSH:
#устанавливаем модуль SSH, один раз Find-Module Posh-SSH | Install-Module #Создаем SSH сессию: Import-Module Posh-SSH $ComputerName = "1.2.3.4" $UserName = "ubuntu" $KeyFile = "C:\SSH\key.pem" $nopasswd = new-object System.Security.SecureString $Crendtial = New-Object System.Management.Automation.PSCredential ($UserName, $nopasswd) $SSHSession = New-SSHSession -ComputerName $ComputerName -Credential $Crendtial -KeyFile $KeyFile #Создаем шелл: $SSH = $SSHSession | New-SSHShellStream # отправляет команду $SSH.WriteLine("ifconfig") # считываем ответ $SSH.read() #закрываем сессию: $sshSession | Remove-SSHSession
Команды:
Примечание. Можно использовать этот модуль, не устанавливая WMF 5.0. Предварительная версия модуля для PS 4.0 и 3.0 доступна отдельно - март 2016 , а более свежие ищите поиском в центре загрузки по запросу PackageManagement PowerShell Modules Preview .
В этом примере из репозитория Chocolatey устанавливаются четыре программы и полный набор утилит Sysinternals. Первые три команды выполняются однократно, причем смену политики надо подтвердить. Четвертая команда тихо устанавливает перечисленные программы, а пятая просто экономит время.
#Разрешить установку подписанных пакетов из Интернета Set-ExecutionPolicy RemoteSigned #Установить поставщик Chocolatey Get-PackageProvider –Name Chocolatey -ForceBootstrap #Сделать Chocolatey доверенным Set-PackageSource -Name Chocolatey -Trusted #Установить программы 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
Типы инсталляторов и ключи тихой установки