Меню Рубрики

Установка программ на удаленном компьютере powershell

Выполнение удаленных команд Running Remote Commands

Одна команда Windows PowerShell позволяет запускать команды на одном или сотнях компьютеров. You can run commands on one or hundreds of computers with a single PowerShell command. Windows PowerShell поддерживает удаленное вычисление с помощью разных технологий, включая WMI, RPC и WS-Management. Windows PowerShell supports remote computing by using various technologies, including WMI, RPC, and WS-Management.

PowerShell Core поддерживает инструментарий WMI, WS-Management и удаленное взаимодействие через SSH. PowerShell Core supports WMI, WS-Management, and SSH remoting. RPC больше не поддерживается. RPC is no longer supported.

Дополнительные сведения об удаленном взаимодействии в PowerShell Core см. в следующих статьях: For more information about remoting in PowerShell Core, see the following articles:

Удаленное взаимодействие с Windows PowerShell без настройки Windows PowerShell Remoting Without Configuration

Многие командлеты Windows PowerShell имеют параметр ComputerName, который позволяет собирать данные и изменять параметры одного или нескольких удаленных компьютеров. Many Windows PowerShell cmdlets have the ComputerName parameter that enables you to collect data and change settings on one or more remote computers. Эти командлеты используют разные протоколы связи и работают во всех операционных системах Windows без специальной настройки. These cmdlets use varying communication protocols and work on all Windows operating systems without any special configuration.

В эти командлеты входят следующие: These cmdlets include:

Обычно командлеты, которые поддерживают удаленное взаимодействие без специальной настройки, имеют параметр ComputerName, но не имеют параметра Session. Typically, cmdlets that support remoting without special configuration have the ComputerName parameter and don’t have the Session parameter. Чтобы найти эти командлеты в сеансе, введите: To find these cmdlets in your session, type:

Служба удаленного взаимодействия Windows PowerShell Windows PowerShell Remoting

Благодаря использованию протокола WS-Management служба удаленного взаимодействия Windows PowerShell позволяет запустить любую команду Windows PowerShell на одном или нескольких удаленных компьютерах. Using the WS-Management protocol, Windows PowerShell remoting lets you run any Windows PowerShell command on one or more remote computers. Вы можете устанавливать постоянные подключения, запускать интерактивные сеансы и выполнять скрипты на удаленных компьютерах. You can establish persistent connections, start interactive sessions, and run scripts on remote computers.

Чтобы использовать службу удаленного взаимодействия Windows PowerShell, удаленный компьютер должен быть настроен для удаленного управления. To use Windows PowerShell remoting, the remote computer must be configured for remote management. Дополнительные сведения, в том числе инструкции, см. в разделе about_Remote_Requirements. For more information, including instructions, see About Remote Requirements.

После настройки службы удаленного взаимодействия Windows PowerShell вы получите доступ ко многим стратегиям удаленного взаимодействия. Once you have configured Windows PowerShell remoting, many remoting strategies are available to you. В этой статье перечислены только некоторые из них. This article lists just a few of them. См. дополнительные сведения об удаленном взаимодействии. For more information, see About Remote.

Запуск интерактивного сеанса Start an Interactive Session

Чтобы запустить интерактивный сеанс с одним удаленным компьютером, используйте командлет Enter-PSSession. To start an interactive session with a single remote computer, use the Enter-PSSession cmdlet. Например, чтобы запустить интерактивный сеанс с удаленным компьютером Server01, введите: For example, to start an interactive session with the Server01 remote computer, type:

В командной строке отобразится имя удаленного компьютера. The command prompt changes to display the name of the remote computer. Все команды, введенные в командной строке, запускаются на удаленном компьютере, а результаты отображаются на локальном компьютере. Any commands that you type at the prompt run on the remote computer and the results are displayed on the local computer.

Чтобы завершить интерактивный сеанс, введите: To end the interactive session, type:

См. дополнительные сведения о командлетах Enter-PSSession и Exit-PSSession: For more information about the Enter-PSSession and Exit-PSSession cmdlets, see:

Выполнение удаленной команды Run a Remote Command

Чтобы выполнить команду на одном или нескольких компьютерах, используйте командлет Invoke-Command. To run a command on one or more computers, use the Invoke-Command cmdlet. Например, чтобы выполнить команду Get-UICulture на удаленных компьютерах Server01 и Server02, введите: For example, to run a Get-UICulture command on the Server01 and Server02 remote computers, type:

Выходные данные будут возвращены на ваш компьютер. The output is returned to your computer.

Запуск сценария Run a Script

Чтобы запустить скрипт на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета Invoke-Command . To run a script on one or many remote computers, use the FilePath parameter of the Invoke-Command cmdlet. Сценарий должен быть включен или доступен для локального компьютера. The script must be on or accessible to your local computer. Результаты будут возвращены на локальный компьютер. The results are returned to your local computer.

Например, следующая команда выполняет скрипт DiskCollect.ps1 на удаленных компьютерах Server01 и Server02. For example, the following command runs the DiskCollect.ps1 script on the remote computers, Server01 and Server02.

Установка постоянного подключения Establish a Persistent Connection

Используйте командлет New-PSSession для создания постоянного сеанса на удаленном компьютере. Use the New-PSSession cmdlet to create a persistent session on a remote computer. В следующем примере создаются удаленные сеансы на удаленных компьютерах Server01 и Server02. The following example creates remote sessions on Server01 and Server02. Объекты сеанса хранятся в переменной $s . The session objects are stored in the $s variable.

Читайте также:  Установка кнопок в руль astra h

После установки сеансов в них можно выполнить любую команду. Now that the sessions are established, you can run any command in them. Так как сеансы являются постоянными, вы можете собирать данные из одной команды и использовать их в другой. And because the sessions are persistent, you can collect data from one command and use it in another command.

Например, следующая команда выполняет команду Get-Hotfix в сеансах в переменной $s и сохраняет результаты в переменной $h. For example, the following command runs a Get-HotFix command in the sessions in the $s variable and it saves the results in the $h variable. Переменная $h создается в каждом сеансе в переменной $s, но она не существует в локальном сеансе. The $h variable is created in each of the sessions in $s, but it doesn’t exist in the local session.

Теперь вы можете использовать данные в переменной $h с другими командами в том же сеансе. Now you can use the data in the $h variable with other commands in the same session. Результаты отобразятся на локальном компьютере. The results are displayed on the local computer. Например: For example:

Расширенная служба удаленного взаимодействия Advanced Remoting

Это и есть служба удаленного взаимодействия Windows PowerShell. Windows PowerShell remote management just begins here. Используя командлеты, установленные с Windows PowerShell, можно установить и настроить удаленные сеансы с локальных и удаленных компьютеров, создать настраиваемые и ограниченные сеансы, разрешить пользователям импортировать команды из удаленного сеанса, которые могут неявно выполняться в удаленном сеансе, настроить безопасность удаленного сеанса и многое другое. By using the cmdlets installed with Windows PowerShell, you can establish and configure remote sessions both from the local and remote ends, create customized and restricted sessions, allow users to import commands from a remote session that actually run implicitly on the remote session, configure the security of a remote session, and much more.

Windows PowerShell включает поставщик WSMan. Windows PowerShell includes a WSMan provider. Поставщик создает диск WSMAN: , который позволяет перемещаться по иерархии параметров конфигурации на локальном и удаленном компьютерах. The provider creates a WSMAN: drive that lets you navigate through a hierarchy of configuration settings on the local computer and remote computers.

См. дополнительные сведения о поставщике WSMan и командлетах WS-Management или введите команду Get-Help wsman в консоли Windows PowerShell. For more information about the WSMan provider, see WSMan Provider and About WS-Management Cmdlets, or in the Windows PowerShell console, type Get-Help wsman .

Дополнительная информация: For more information, see:

Справку по ошибкам службы удаленного взаимодействия см. в статье about_Remote_Troubleshooting. For help with remoting errors, see about_Remote_Troubleshooting.

источник

Работа с программами установки программного обеспечения Working with Software Installations

Доступ к приложениям, использующим установщик Windows, можно получить в классе Win32_Product WMI, но не все современные приложения используют установщик Windows. Applications that are designed to use Windows Installer can be accessed through WMI’s Win32_Product class, but not all applications in use today use the Windows Installer. Установщик Windows обычно не управляет приложениями, использующими другие процедуры установки. Applications that use alternate setup routines are not usually managed by the Windows Installer. Конкретные техники работы с этими приложениями зависят от программного обеспечения установщика и решений, принятых разработчиком приложения. Specific techniques for working with those applications depends on the installer software and decisions made by the application developer. Например, для управления приложениями, установленными путем копирования файлов в папку на компьютере, обычно не используются описанные здесь методы. For example, applications installed by copying the files to a folder on the computer usually cannot be managed by using techniques discussed here. Вы можете управлять этими приложениями, как файлами и папками, с помощью способов, приведенных в статье Работа с файлами и папками. You can manage these applications as files and folders by using the techniques discussed in Working With Files and Folders.

Класс Win32_Product не оптимизирован для запросов. The Win32_Product class is not query optimized. Если выполняются запросы, использующие фильтры с подстановочными знаками, то WMI будет использовать поставщика MSI для перечисления всех установленных продуктов, а затем последовательно проанализирует весь список с применением фильтра. Queries that use wildcard filters cause WMI to use the MSI provider to enumerate all installed products then parse the full list sequentially to handle the filter. При этом также инициируется проверка согласованности установленных пакетов для проверки и исправления установки. This also initiates a consistency check of packages installed, verifying and repairing the install. Проверка выполняется медленно и может привести к ошибкам в журнале событий. The validation is a slow process and may result in errors in the event logs. Подробные сведения см. в статье базы знаний 974524. For more information seek KB article 974524.

Создание списков приложений установщика Windows Listing Windows Installer Applications

Чтобы создать список приложений, установленных с помощью установщика Windows в локальной или удаленной системе, используйте следующий простой запрос WMI: To list the applications installed with the Windows Installer on a local or remote system, use the following simple WMI query:

Читайте также:  Установка вентиляторов спереди радиатора

Чтобы отобразить все свойства объекта Win32_Product, используйте параметр Properties командлетов форматирования, например Format-List со значением * (все). To display all the properties of the Win32_Product object to the display, use the Properties parameter of the formatting cmdlets, such as the Format-List cmdlet, with a value of * (all).

Можно также использовать параметр Get-CimInstance Filter, чтобы выбрать только среду выполнения Microsoft .NET 2.0. Or, you could use the Get-CimInstance Filter parameter to select only Microsoft .NET 2.0 Runtime. Для значения параметра Filter используется синтаксис языка запросов WMI (WQL), а не синтаксис Windows PowerShell. The value of the Filter parameter uses WMI Query Language (WQL) syntax, not Windows PowerShell syntax. Пример: For example:

Чтобы получить список только интересующих вас свойств, используйте параметр Property командлетов форматирования. To list only the properties that interest you, use the Property parameter of the formatting cmdlets to list the desired properties.

Создание списка всех удаленных приложений Listing All Uninstallable Applications

Так как большинство стандартных приложений регистрируют программу удаления в Windows, с ними можно работать локально, в реестре Windows. Because most standard applications register an uninstaller with Windows, we can work with those locally by finding them in the Windows registry. Не существует гарантированного способа найти все приложения в системе. There is no guaranteed way to find every application on a system. Но можно найти все программы в списках, отображаемых в окне Установка и удаление программ в следующем разделе реестра: However, it is possible to find all programs with listings displayed in Add or Remove Programs in the following registry key:

В этом разделе можно найти приложения. We can examine this key to find applications. Чтобы упростить просмотр раздела Uninstall, можно сопоставить диск PowerShell с таким путем реестра: To make it easier to view the Uninstall key, we can map a PowerShell drive to this registry location:

Теперь диск с именем «Uninstall» можно использовать для быстрого и удобного поиска установок приложений. We now have a drive named «Uninstall:» that can be used to quickly and conveniently look for application installations. Количество установленных приложений можно найти, подсчитав количество разделов реестра в разделе «Удаление»: Диск PowerShell: We can find the number of installed applications by counting the number of registry keys in the Uninstall: PowerShell drive:

С помощью разных методов, начиная с Get-ChildItem , можно дальше выполнять поиск в списке приложений. We can search this list of applications further by using a variety of techniques, beginning with Get-ChildItem . Чтобы получить список приложений и сохранить их в переменную $UninstallableApplications , используйте следующую команду: To get a list of applications and save them in the $UninstallableApplications variable, use the following command:

Чтобы отобразить значения записей реестра в подразделах реестра раздела «Удаление», используйте метод GetValue. To display the values of the registry entries in the registry keys under Uninstall, use the GetValue method of the registry keys. Значение метода является записью реестра. The value of the method is the name of the registry entry.

Например, чтобы найти отображаемые имена приложений в разделе «Удаление», используйте следующую команду: For example, to find the display names of applications in the Uninstall key, use the following command:

Нет никакой гарантии, что эти значения уникальны. There is no guarantee that these values are unique. В следующем примере два установленных элемента отображаются как Windows Media Encoder 9 Series: In the following example, two installed items appear as «Windows Media Encoder 9 Series»:

Установка приложений Installing Applications

Вы можете использовать класс Win32_Product для удаленной или локальной установки пакетов установщика Windows. You can use the Win32_Product class to install Windows Installer packages, remotely or locally.

Чтобы установить приложение, запустите PowerShell, используя параметр «Запуск от имени администратора». To install an application, you must start PowerShell with the «Run as administrator» option.

Если установка выполняется удаленно, используйте сетевой UNC-путь, чтобы указать путь к пакету MSI, так как подсистема WMI не распознает пути PowerShell. When installing remotely, use a Universal Naming Convention (UNC) network path to specify the path to the .msi package, because the WMI subsystem does not understand PowerShell paths. Например, чтобы установить пакет NewPackage.msi, расположенный в сетевой папке \\AppServ\dsp на удаленном компьютере PC01, введите следующую команду в командной строке PowerShell: For example, to install the NewPackage.msi package located in the network share \\AppServ\dsp on the remote computer PC01, type the following command at the PowerShell prompt:

Приложения, которые не используют метод установщика Windows, могут включать специальные методы для автоматического развертывания конкретного приложения. Applications that do not use Windows Installer technology may have application-specific methods for automated deployment. Изучите документацию по приложению или обратитесь в службу поддержки поставщика приложения. Check the documentation for the application or consult the application vendor’s support system.

Удаление приложений Removing Applications

Удаление пакета установщика Windows с помощью PowerShell работает примерно так же, как и установка пакета. Removing a Windows Installer package using PowerShell works in approximately the same way as installing a package. Далее представлен пример, в котором пакет для удаления выбирается на основе имени. В некоторых случаях его может быть проще отфильтровать с помощью IdentifyingNumber: Here is an example that selects the package to uninstall based on its name; in some cases it may be easier to filter with the IdentifyingNumber:

Читайте также:  Установка задних подкрылков на джимни

Удаление других приложений не так просто, даже если оно выполняется локально. Removing other applications is not quite so simple, even when done locally. Строки удаления командной строки для этих приложений можно найти путем извлечения свойства UninstallString. We can find the command line uninstallation strings for these applications by extracting the UninstallString property. Этот способ работает для приложений установщика Windows и более старых программ, отображающихся в разделе «Удаление»: This method works for Windows Installer applications and for older programs appearing under the Uninstall key:

Выходные данные при необходимости можно отфильтровать по отображаемому имени: You can filter the output by the display name, if you like:

Возможно, что эти строки нельзя будет напрямую использовать из командной строки PowerShell без внесения некоторых изменений. However, these strings may not be directly usable from the PowerShell prompt without some modification.

Обновление приложений установщика Windows Upgrading Windows Installer Applications

Чтобы обновить приложение, необходимо знать название приложения и путь к пакету обновлений приложения. To upgrade an application, you need to know the name of the application and the path to the application upgrade package. Получив эти сведения, вы можете обновить приложение с помощью одной команды PowerShell: With that information, you can upgrade an application with a single PowerShell command:

источник

Удаленное управление через Powershell

В Powershell есть несколько методов удаленного подключения. Это через:

Сегодня мы поговорим о PS remoting/WinRM. В его состав входит, в основном, два командлета — это:

Этот командлет устанавливает сессию c удаленным компьютером и мы сможем работать прям на нем. Если сравнивать с Linux, то это почти одно и то же:

И второй командлет, который нужен для удаленного выполнения команд как на одном, так и сотни компьютеров:

Где:
-ComputerName — имена компьютеров (или одного)
-Scriptblock — скрипт или командлет в скобках <>

Если опять же сравнить с Linux ssh, то это почти одно и то же:

Как настроить удаленное управление через Powershell?

Для того что бы суметь настроить нужно понять как это работает. Команды выше могут работать по протоколу HTTP (по порту 5985) и HTTPS (5986), за исключением версии Powershell 1.0, который работал в XP (там порт 80/443). По умолчанию у нас стоит HTTP, но и эти данные шифруются используя симметричный ключ AES-256. Сама аутентификация работает в 2 режимах NTLM и Kerberos(по умолчанию стоит он). Если у вас сеть с домен контроллером, т.е. есть Kerberos, то у вас должны работать команды выше. Если компьютеры в Workgroup, то они используют NTLM и для этого нужна дополнительная настройка. Кроме того, если вы вместо имен используете IP, то вы в любом случае используете NTLM и это по умолчанию не работает.

Если у вас не работают команды выше нужно проверить запущен ли сервис WinRM на том компьютере, к которому мы хотим подключиться:

В этом случае мы ставим запуск сервиса автоматически и настраиваем winrm в дефолтной конфигурации. Этот сервис дает возможность принимать команды Powershell и устанавливать сеансы.

Если вы работаете под профилем сети «Public» (не «Domain» или «Private»), то нужно выполнить еще один командлет, разрешающий работать в таких сетях:

Если мы выполним такую команду:

Получим ошибку:
Connecting to remote server 192.168.3.100 failed with the following error message : The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided.

Которая говорит, что мы можем подключится по IP если используем HTTPS (для этого нужен сертификат) или добавить хост, к которому подключаемся в TrustedHost компьютера с которого хотим запустить команду. Для этого делаем:

После этого все будет работать, но команды должны исполняться с переменной, в которой будут лежать учетные данные пользователя. Т.е. так:

Где:
$cred — это переменная, куда мы сохраняем данные с формы Get-Credential
-Credential — сюда мы передаем переменную

Так же отмечу, что все команды, которые мы запускаем для удаленного выполнения через Poweshell, должны происходить от члена группы Администратора того хоста, к которому мы подключаемся.

Теперь мы можем устанавливать множество сессий с помощью командлета:

И подключаться по этим ID:

Или использовать с invoke существующую сессию, а командлет для удаленного компьютера запускать с файла:

А так же, т.к. WinRM настроен, выполнять командлеты где есть ключ -ComputerName, сразу на нескольких компьютерах. Этот командлет пропингует AD сразу с нескольких компьютеров:

Или же использовать методы описанные выше.

Дополнительные ключи мы можем узнать по командлетам:

источник

Добавить комментарий