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

Удаленная установка программы через удаленный PowerShell

  • Post author: admin
  • Запись опубликована: 13 июля, 2022
  • Post category: Вопросы по программированию

#powershell #installation

#powershell #установка

Вопрос:

Я пытаюсь удаленно установить ActivClient на некоторые компьютеры, я копирую файл для общедоступных загрузок отдельно.

Я сталкиваюсь с проблемой, когда при попытке запустить этот скрипт он запускается локально на моем компьютере. Мне нужно запустить это Deploy-Application.Файл PS1 для этого.

Я также не могу понять, как разблокировать всю папку, есть несколько вложенных папок и файлов, которые я хотел бы разблокировать.

Я не могу удаленно подключиться к компьютеру через RDP, потому что мне нужен ActivClient, установленный для удаленного входа. Удаленный PowerShell — единственный метод, который я могу найти для запуска этого.

Если мне не хватает информации или нужно предоставить больше, пожалуйста, дайте мне знать.

Как установить приложения с помощью Powershell


$mypath = $MyInvocation.MyCommand.Path $Path = Split-Path $mypath -Parent [void][Reflection.Assembly]::LoadWithPartialName(‘Microsoft.VisualBasic’) $title = ‘Computer Name’ $msg = ‘Enter the Computer Name you need to reinstall ActivClient on:’ $CName = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title) if (Test-Connection -ComputerName $CName -Count 1)< Write-Host «Entering Remote Powershell Session» $PSSession = New-PSSession -Name $CName Invoke-Command -Session $PSSession -ScriptBlock< Get-ChildItem «C:UsersPublicDownloadsSDC NIPR — ActivClient v7.2.x — 210811_18NOV» | Unblock-File cd «C:UsersPublicDownloadsSDC NIPR — ActivClient v7.2.x — 210811_18NOV» .Deploy-Application.ps1 Install ‘NonInteractive’ pause >

Ответ №1:

  • Использовать New-PSSession -ComputerName $CName , а не New-PSSession -Name $CName .
  • -Name только дает создаваемому сеансу понятное имя, оно не связано с тем, на какой компьютер вы нацелены. При отсутствии -ComputerName аргумента локальная машина становится (несколько бесполезной) целевой, поэтому скрипт запускался на вашей локальной машине.
  • Обратите внимание, что если вы вызываете удаленный вызов только Invoke-Command один раз для каждого удаленного компьютера, вам не нужно явно создавать сеанс и вместо этого вы можете использовать -ComputerName $CName непосредственно с Invoke-Command :

# No need for New-PSSession. Invoke-Command -ComputerName $CName -ScriptBlock

Вам также может понравиться

Babylon.js Проблемы с загрузкой MTL. Файлы в OBJ. Модели, экспортируемые из Blender

21 марта, 2023

Я хочу прочитать данные из firestore

28 декабря, 2022

Как отобразить индикатор загрузки перед возвратом NetworkImage?

3 сентября, 2022

  • О нас
  • Онлайн игры
  • Конвертеры
  • Base64 конвертер онлайн
  • Оформление кода JavaScript CSS HTML Онлайн
  • URL Encoder (кодировщик) / Decoder (декодировщик) онлайн
  • Конвертер регистров
  • Рассчитать количество дней между датами
  • Генератор ключей и паролей
  • Генератор QR кодов
  • Преобразование времени
  • Преобразование микросекунд в секунды
  • Преобразование микросекунд в миллисекунды
  • Преобразование миллисекунд в микросекунды
  • Преобразование миллисекунд в секунды
  • Преобразование миллисекунд в минуты
  • Преобразование миллисекунд в часы
  • Преобразователь миллисекунд в дату
  • Преобразование секунд в миллисекунды
  • Преобразование секунд в минуты
  • Преобразование секунд в часы
  • Преобразование секунд в дни
  • Преобразование минут во время
  • Преобразование минут в миллисекунды
  • Преобразование минут в секунды
  • Преобразование минут в часы
  • Преобразование часов в миллисекунды
  • Преобразование часов в секунды
  • Преобразование часов в минуты
  • Преобразование часов в дни
  • Преобразование дней в часы
  • Преобразование из часы в недели
  • Конвертация из недели в часы
  • Через несколько часов калькулятор
  • Преобразование времени AM/PM в 24-часовое
  • Преобразование Военного Времени
  • Время до десятичного калькулятора
  • Безопасность
  • Финансы
  • Энциклопедия

Источник: programbox.ru

Правильная установка программ в WINDOWS 10, 11 | chocolatey

Установка программного обеспечения

Доступ к приложениям, спроектированным для использования установщика Windows, может быть получен через класс WMI Win32_Product, но в настоящее время не все приложения используют установщик Windows. Установщик Windows предоставляет широчайший спектр стандартных методов работы с устанавливаемыми приложениями, поэтому главное внимание будет уделяться именно этим приложениям. Приложения, для которых предусмотрены другие процедуры установки, обычно не управляются установщиком Windows. Особенные способы работы с такими приложениями зависят от программного обеспечения установщика и решений, принятых разработчиками приложений.

Читайте также:
Как найти работающие программы в компьютере

Использование рассматриваемых способов обычно невозможно для управления приложениями, которые устанавливаются копированием файлов приложения на компьютер. Такие приложения можно обрабатывать как отдельные файлы и папки, используя методы, рассмотренные в разделе «Работа с файлами и папками».

Получение списка приложений, установленных при помощи установщика Windows

Чтобы построить список приложений, установленных на локальной или удаленной системе при помощи установщика Windows, можно использовать несложный запрос WMI:

PS> Get-WmiObject -Class Win32_Product -ComputerName . IdentifyingNumber : Name : Microsoft .NET Framework 2.0 Vendor : Microsoft Corporation Version : 2.0.50727 Caption : Microsoft .NET Framework 2.0

Чтобы вывести на экран все свойства объекта Win32_Product, используйте параметр Properties командлетов форматирования, например командлета Format-List, со значением * (все).

PS> Get-WmiObject -Class Win32_Product -ComputerName . | Where-Object -FilterScript | Format-List -Property * Name : Microsoft .NET Framework 2.0 Version : 2.0.50727 InstallState : 5 Caption : Microsoft .NET Framework 2.0 Description : Microsoft .NET Framework 2.0 IdentifyingNumber : InstallDate : 20060506 InstallDate2 : 20060506000000.000000-000 InstallLocation : PackageCache : C:WINDOWSInstaller619ab2.msi SKUNumber : Vendor : Microsoft Corporation

Чтобы выбрать только Microsoft .NET Framework 2.0, можно также воспользоваться параметром Get-WmiObject Filter. В этой команде использован фильтр WMI, который следует не синтаксису фильтров Windows PowerShell, а синтаксису языка WQL. Вместо этого введите:

Get-WmiObject -Class Win32_Product -ComputerName . -Filter «Name=’Microsoft .NET Framework 2.0′»| Format-List -Property *

Запросы WQL часто содержат знаки (например, пробелы и знаки равенства), которые имеют в Windows PowerShell специальное значение. Поэтому рекомендуется всегда заключать значение параметра Filter в кавычки. Может быть использован и управляющий знак Windows PowerShell гравис (`), однако при этом чтение команды становится менее удобным. Следующая команда эквивалентна предыдущей, она возвращает тот же результат, однако вместо заключения всей строки фильтра в кавычки в ней применен специальный управляющий символ гравис.

Get-WmiObject -Class Win32_Product -ComputerName . -Filter Name`=`’Microsoft` .NET` Framework` 2.0`’ | Format-List -Property *

Чтобы вывести только желаемые свойства, используйте параметр Property командлетов форматирования для перечисления этих свойств.

Get-WmiObject -Class Win32_Product -ComputerName . | Format-List -Property Name,InstallDate,InstallLocation,PackageCache,Vendor,Version,IdentifyingNumber . Name : HighMAT Extension to Microsoft Windows XP CD Writing Wizard InstallDate : 20051022 InstallLocation : C:Program FilesHighMAT CD Writing Wizard PackageCache : C:WINDOWSInstaller113b54.msi Vendor : Microsoft Corporation Version : 1.1.1905.1 IdentifyingNumber : .

Наконец, если необходимо определить только имена установленных приложений, сократить вывод позволит следующая простая инструкция Format-Wide:

Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1

Итак, существует несколько способов получения сведений о приложениях, установленных при помощи установщика Windows, однако остальные приложения пока не рассмотрены. Поскольку большинство стандартных приложений регистрирует программу удаления в Windows, их можно найти локально путем поиска программ удаления в реестре Windows.

Получение списка приложений, поддерживающих удаление

Не существует гарантированного способа нахождения всех приложений, установленных в системе, однако можно найти все программы, отображаемые в диалоговом окне «Установка и удаление программ». Диалоговое окно «Установка и удаление программ» находит эти приложения в следующем разделе реестра:

HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionUninstall.

Этот раздел также можно проверить, чтобы найти приложения. Просмотр раздела Uninstall можно упростить, отобразив соответствующее положение в реестре на диск Windows PowerShell:

PS> Name Provider Root CurrentLocation —- ——— —- ————— Uninstall Registry HKEY_LOCAL_MACHINESOFTWAREMicr.

Диск HKLM: отображает корневой раздел HKEY_LOCAL_MACHINE, поэтому он и был использован в пути к разделу Uninstall. Вместо HKLM: можно указать путь к разделу реестра, используя разделы HKLM или HKEY_LOCAL_MACHINE. Использование существующего диска реестра удобнее, так как вместо ввода имен разделов вручную позволяет воспользоваться функцией автозавершения по нажатию клавиши TAB.

Читайте также:
Как удалить программу унлокером

Созданный диск с именем «Uninstall» делает поиск установленных приложений быстрым и удобным. Число установленных приложений можно определить, подсчитав количество разделов реестра на диске Uninstall: в Windows PowerShell:

PS> (Get-ChildItem -Path Uninstall:).Count 459

Дальнейший поиск в полученном списке приложений осуществляется разнообразными методами, начиная с использования командлета Get-ChildItem. Для получения списка приложений и их сохранения в переменной $UninstallableApplications используйте следующую команду:

$UninstallableApplications = Get-ChildItem -Path Uninstall:

Длинное имя переменной использовано здесь лишь для улучшения восприятия. На практике использование длинных имен не имеет особого смысла. Для имен переменных поддерживается автозавершение по нажатию клавиши TAB, но использование имен длиной в 1 — 2 знака позволяет ускорить ввод команд. Более длинные описательные имена наиболее полезны при разработке кода для повторного использования.

Для вывода значений записей реестра во вложенных разделах реестра раздела реестра Uninstall используйте метод GetValue для разделов реестра. Значение метода является именем записи в реестре.

Например, чтобы определить отображаемые имена приложений из раздела Uninstall, используйте следующую команду:

PS> Get-ChildItem -Path Uninstall: | ForEach-Object -Process

Уникальность этих значений не гарантирована. В следующем примере два установленных элемента отображаются как «Windows Media Encoder 9 Series»:

PS> Get-ChildItem -Path Uninstall: | Where-Object -FilterScript < $_.GetValue(«DisplayName») -eq «Windows Media Encoder 9 Series»>Hive: Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESOFTWAREMicros oftWindowsCurrentVersionUninstall SKC VC Name Property — — —- ——— 0 3 Windows Media Encoder 9

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

Класс Win32_Product можно использовать для удаленной или локальной установки пакетов установщика Windows. При удаленной установке необходимо указать путь к устанавливаемому пакету MSI в виде сетевого UNC-пути, так как подсистема WMI не распознает пути Windows PowerShell. Например, для установки пакета NewPackage.msi, расположенного на общем сетевом ресурсе \AppServdsp на удаленном компьютере PC01, введите в командной строке Windows PowerShell следующую команду:

(Get-WMIObject -ComputerName PC01 -List | Where-Object -FilterScript ).Install(\AppSrvdspNewPackage.msi)

Приложения, не использующие технологию установщика Windows, могут поддерживать собственные методы автоматизированного развертывания. Сведения о наличии метода автоматизации развертывания обычно можно найти в документации к приложению или получить в системе технической поддержки его производителя. В отдельных случаях, даже если автоматизация установки не была явно предусмотрена производителем приложения, некоторые методы автоматизации могут поддерживаться производителем ПО установщика.

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

Удаление пакета, установленного при помощи установщика Windows, осуществляется в оболочке Windows PowerShell приблизительно так же, как и установка пакета. В следующем примере выбор пакета для удаления производится на основе его имени, но в отдельных случаях удобнее использовать фильтр IdentifyingNumber:

(Get-WmiObject -Class Win32_Product -Filter «Name=’ILMerge'» -ComputerName . ).Uninstall()

Удаление других приложений несколько сложнее, даже если производится локально. Команды удаления таких приложений из командной строки содержатся в свойстве UninstallString. Следующий метод пригоден как для приложений, установленных при помощи установщика Windows, так и для старых программ, перечисленных в разделе Uninstall:

Get-ChildItem -Path Uninstall: | ForEach-Object -Process

При необходимости можно отфильтровать вывод по отображаемому имени:

Get-ChildItem -Path Uninstall: | Where-Object -FilterScript < $_.GetValue(«DisplayName») -like «Win*»>| ForEach-Object -Process

Однако полученные команды не всегда можно использовать в командной строке Windows PowerShell без изменений.

Обновление приложений, установленных при помощи установщика Windows

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

(Get-WmiObject -Class Win32_Product -ComputerName . -Filter «Name=’OldAppName'»).Upgrade(\AppSrvdspOldAppUpgrade.msi)

Источник: www.forsenergy.com

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

Как в Powershell подключиться к удаленному компьютеру

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

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

Enter-PSSession -ComputerName CL1

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

Читайте также:
Программы необходимые для работы в сети интернет

ssh CL1

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

Invoke-Command -ComputerName AD,CL1 -ScriptBlock

Где:
-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 на том компьютере, к которому мы хотим подключиться:

Get-Service -Name «*WinRM*» | fl

Если не запушен:

Enable-PSRemoting

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

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

Set-NetFirewallRule -Name «WINRM-HTTP-In-TCP-PUBLIC» -RemoteAddress Any

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

Invoke-Command -ComputerName 192.168.3.100 -ScriptBlock

Получим ошибку:
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 компьютера с которого хотим запустить команду. Для этого делаем:

Set-Item wsman:localhostClientTrustedHosts -value 192.168.3.134

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

$cred = Get-Credential Invoke-Command -ComputerName 192.168.3.134 -ScriptBlock -Credential $cred

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

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

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

New-PSSession -ComputerName 192.168.3.134 -Credential $cred

Получать ID этих сессий:

Get-PSSession

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

Enter-PSSession -Id 9

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

$cred = Get-Credential $s = New-PSSession -ComputerName 192.168.3.134 -Credential $cred Invoke-Command -Session $s -FilePath c:scriptstest.ps1

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

Test-Connection -Source CL1,CL2 -ComputerName AD -Credential $cred

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

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

Get-Help Enter-PSSession -Examples Get-Command -Noun PSSession

или по powershell invoke

Get-Help Invoke-Command -Examples

Источник: fixmypc.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru