Использование Powershell для остановки службы удаленно без WMI или удаленного доступа
Я столкнулся с этим одним лайнером, который работает:
Может кто-нибудь объяснить, почему, потому что я думал, что стоп-сервис не работает, если вы не использовали удаленный доступ или не произошли на локальном хосте.
Powershell: удаленная установка exe
У меня проблемы с моим скриптом, который предназначен для удаленной установки исполняемого файла. Все предварительные действия моего сценария работают просто отлично. Я извлекаю имена хостов около десятка компьютеров из текстового файла. Я использую PSExec для включения-PSRemoting. Затем установщик копируется во временный каталог на удаленном компьютере. Все отлично работает, кроме важной части. Я просто не могу заставить его установить.
Я пробовал следующее:
Я пытался использовать New-PSSession так:
Никто не посылает никаких ошибок, они просто ничего не делают. Команды, которые имеют -Wait просто навсегда зависают. Если я ставлю -Sleep, он просто ждет запрошенные секунды, а затем завершает работу, ничего не делая. Я не знаю, имеет ли это значение, но когда я запускаю исполняемый файл на локальном компьютере с параметром / SILENT, он не запрашивает никаких запросов, но открывает окно проводника.
Я пытался использовать PSExec.exe, но я получаю аналогичный результат. Просто навсегда висит безо всякой ошибки. Заранее благодарю за любую помощь!
Invoke-Команда
Если вы не хотите использовать pssessions, вы также можете использовать Invoke-Command на удаленной машине. Вы уже пытаетесь сделать это с помощью последних строк кода.
Если вы пойдете по этому пути, знайте о проблемах с областью действия и посмотрите, как передавать аргументы в блок сценариев .
Я не уверен, почему ваш не работает. Возможно, у вас есть какие-то ошибки, которые подавляются? Я бы попробовал что-нибудь попроще для тестирования. Основано ли ваше приложение GUI? Это может не сработать при таком запуске. Попробуйте что-то вроде ipconfig и посмотрите, каковы результаты.
Я бы также рассмотрел while loop с условием тайм-аута, пока вы ждете завершения/запуска процесса на удаленной машине. Это означало, что вы можете лучше объяснить неудачи, вместо того чтобы считать, что 10 секунд достаточно.
Я думаю, что у вас проблема с локальным/удаленным выполнением.
(Get-WmiObject win32_process -ComputerName $computer -Credential $mycreds | ?< [H1toH2]
Похожие вопросы:
Я пытаюсь сопоставить сетевой диск на удаленном компьютере с помощью команды Invoke-Command: Invoke-Command -ComputerName servername -ScriptBlock < net use L: \serverfolder password /user:login>.
Я установил PS 1.0 на удаленный компьютер(RPC001). Я использовал Windows Sysinternals tool PSExec.exe для выполнения следующего процесса на удаленном компьютере: PSExec \RPC001 -u myID -p myPWD.
Как сопоставить / размонтировать сетевой ресурс на удаленном компьютере с помощью powershell? Спасибо
У меня есть 3 сервера, на которых работают 3 службы: Сервер-запущенная служба serv1.exe Сервер-B запускает службу serv2.exe Сервер-C запуск службы serv3.exe Используя PowerShell, как я могу.
У нас есть программа, работающая примерно на 400 PCs (все W7). Эта программа называется Wisa. Мы регулярно получаем обновления для этой программы, названной что-то вроде wisa_update1.0.exe .
Я пытаюсь запустить программу на удаленном компьютере, но не могу найти файл. Что случилось? C:tempPSTools>psexec \nb_IT10 -u godrjak -p pimpam1+ c:Program Files.
Я пытаюсь обновить строку файла на удаленном компьютере. В своем скрипте я использую следующий код. Get-Content Clients.txt | ForEach-Object \ < Get-Item \ [H1toH2]
Invoke-Команда
Если вы не хотите использовать pssessions, вы также можете использовать Invoke-Command на удаленной машине. Вы уже пытаетесь сделать это с помощью последних строк кода.
Если вы пойдете по этому пути, знайте о проблемах с областью действия и посмотрите, как передавать аргументы в блок сценариев .
Я не уверен, почему ваш не работает. Возможно, у вас есть какие-то ошибки, которые подавляются? Я бы попробовал что-нибудь попроще для тестирования. Основано ли ваше приложение GUI? Это может не сработать при таком запуске. Попробуйте что-то вроде ipconfig и посмотрите, каковы результаты.
Я бы также рассмотрел while loop с условием тайм-аута, пока вы ждете завершения/запуска процесса на удаленной машине. Это означало, что вы можете лучше объяснить неудачи, вместо того чтобы считать, что 10 секунд достаточно.
Я думаю, что у вас проблема с локальным/удаленным выполнением.
(Get-WmiObject win32_process -ComputerName $computer -Credential $mycreds | ?<
[H1toH2]
.ProcessName -match «Workbench3.helper» >).Terminate()
Приведенная выше строка возвращает все процессы с удаленного компьютера на локальный компьютер. Чем вы настраиваете возвращенные объекты-процессы на своей машине LOCAL и вызываете Terminate() на своей машине LOCAL. Я бы посоветовал вам вместо этого использовать следующую строку:
Это должно убить процесс(ы) Workbench3. Я использовал оператор like , чтобы сделать фильтрацию менее строгой.
После этого вы можете повторно использовать сеанс, сохраненный в $pers , чтобы снова запустить процесс.
Invoke-command -session $pers -scriptblock
Я дополнительно использовал переключатель -Wait . Переключатель заставляет Start-Process ждать запуска программы (и возвращаться после этого).
При выполнении удаленных операций я всегда предлагаю выполнять эти операции через Invoke-Command , а не через параметры -ComputerName нескольких команд. Invoke-Command использует WS-MAN через HTTP(Ы), в то время как удаленная реализация команд, предлагающих параметр -ComputerName , отличается реализацией от командлета к командлету. Это преимущество invoke-command упрощает настройку, например, брандмауэров.
Надеюсь, это поможет.
Я пытаюсь запустить программу на удаленном компьютере, но не могу найти файл. Что случилось? C:tempPSTools>psexec \nb_IT10 -u godrjak -p pimpam1+ c:Program Files (x86)Notepad++notepad++.exe PsExec v2.2 — Execute processes remotely Copyright (C) 2001-2016 Mark Russinovich Sysinternals -.
Я пытаюсь обновить строку файла на удаленном компьютере. В своем скрипте я использую следующий код. Get-Content Clients.txt | ForEach-Object \ < Get-Item \
D$Runtimerun.properties \>| Replace-FileString.ps1 -Pattern ‘$PropName=.*’ -Replacement ‘$PropName=$PropValue’ -Overwrite Но я получаю.
Спасибо за всю вашу помощь! Итак, вот что я получил, чтобы выполнить то, что я пытался сделать, как вы думаете?
[/H1toH2]
D$Runtimerun.properties \>|.
У меня есть .exe с расположением C:Program файлов (x86)IntercedeMyIDDesktop Я хочу создать скрипт, чтобы открыть его на удаленном компьютере. Когда я выполняю скрипт: invoke-command -computername.
Я хочу, чтобы все компьютеры в моей Сети были в курсе определений антивируса Defender, настроив скрипт PowerShell, который будет автоматически загружать их с веб-сайта Microsoft. Затем скрипт.
Azure runbook. Вопрос: Как запустить/вызвать powershell скрипты на удаленном Azure VM с помощью runbook? Скрипт помещается на удаленный VM. Нет Azure AD, powershell имеет установленный модуль Az.
[/H1toH2]
.ProcessName -match «Workbench3.helper» >).Terminate()
Приведенная выше строка возвращает все процессы с удаленного компьютера на локальный компьютер. Чем вы настраиваете возвращенные объекты-процессы на своей машине LOCAL и вызываете Terminate() на своей машине LOCAL. Я бы посоветовал вам вместо этого использовать следующую строку:
Это должно убить процесс(ы) Workbench3. Я использовал оператор like , чтобы сделать фильтрацию менее строгой.
После этого вы можете повторно использовать сеанс, сохраненный в $pers , чтобы снова запустить процесс.
Invoke-command -session $pers -scriptblock
Я дополнительно использовал переключатель -Wait . Переключатель заставляет Start-Process ждать запуска программы (и возвращаться после этого).
При выполнении удаленных операций я всегда предлагаю выполнять эти операции через Invoke-Command , а не через параметры -ComputerName нескольких команд. Invoke-Command использует WS-MAN через HTTP(Ы), в то время как удаленная реализация команд, предлагающих параметр -ComputerName , отличается реализацией от командлета к командлету. Это преимущество invoke-command упрощает настройку, например, брандмауэров.
Надеюсь, это поможет.
Я пытаюсь запустить программу на удаленном компьютере, но не могу найти файл. Что случилось? C:tempPSTools>psexec \nb_IT10 -u godrjak -p pimpam1+ c:Program Files (x86)Notepad++notepad++.exe PsExec v2.2 — Execute processes remotely Copyright (C) 2001-2016 Mark Russinovich Sysinternals -.
Я пытаюсь обновить строку файла на удаленном компьютере. В своем скрипте я использую следующий код. Get-Content Clients.txt | ForEach-Object \ < Get-Item \
D$Runtimerun.properties \>| Replace-FileString.ps1 -Pattern ‘$PropName=.*’ -Replacement ‘$PropName=$PropValue’ -Overwrite Но я получаю.
Спасибо за всю вашу помощь! Итак, вот что я получил, чтобы выполнить то, что я пытался сделать, как вы думаете?
[/H1toH2]
Разрешить запуск скриптов PowerShell
По умолчанию запуск скриптов PowerShell может быть запрещён.
Пытаюсь запустить скрипт, получаю ошибку:
Не удается загрузить файл. Файл не имеет цифровой подписи. Невозможно выполнить сценарий в указанной системе.
Посмотрим текущее значение политики выполнения скриптов PowerShell:
- Restricted – запрещен запуск скриптов PowerShell, можно выполнять только интерактивные команды.
- AllSigned – разрешено выполнять только скрипты с цифровой подписью от доверенного издателя.
- RemoteSigned – можно запускать локальные PowerShell скрипты без ограничения. Можно запускать удаленные PowerShell скрипты с цифровой подписью. Нельзя запускать PS1 файлы, скачанные из Интернета. В свойствах скачанного файла можно «Разблокировать» запуск скрипта.
- Unrestricted – разрешен запуск любых PowerShell скриптов.
- Bypass – разрешён запуск любых PowerShell скриптов. Эта политика обычно используется для автоматического запуска PS скриптов без вывода каких-либо уведомлений и не рекомендуется для постоянного использования.
- Default – сброс настроек выполнения скриптов на стандартные.
У меня установлена политика AllSigned, поэтому неподписанный скрипт не запустился.
Для изменения текущего значения политики запуска PowerShell скриптов используется командлет Set-ExecutionPolicy.
Как видно из скриншота, политика запуска PowerShell скриптов изменилась, но. не изменилась. Такая ошибка появляется, если политики запуска PowerShell скриптов управляются групповыми политиками, например, если компьютер в домене.
В этом случае нам поможет реестр. В разделе
Ещё можно запустить скрипт с явно указанной политикой:
Можно установить не только политику запуска PowerShell скриптов, но и зону её действия с помощью параметра Scope.
Troubleshooting — Устранение неполадок
Больше детально можно почитать на сайте Microsoft:
Синтаксис Enter-PSSession
Проверка состояния на клиенте
# Получаем информацию по Listener (Слушатель)
winrm e winrm/config/listener
# Listener_641507880 это мой ID, добиваем табом.
dir WSMan:localhostListenerListener_