Как использовать сценарий PowerShell для запуска другого сценария PowerShell на удаленном компьютере
Я хочу поддерживать все компьютеры в моей сети в актуальном состоянии с помощью определений Defender Anti-Virus, настроив сценарий PowerShell, который будет автоматически загружать их с веб-сайта Microsoft. Затем сценарий перенесет файл .exe с моего компьютера на все компьютеры в текстовом файле.
Что я хочу сделать сейчас, так это запустить .exe на удаленном компьютере, но я не заставляю его работать как-то. Ниже мой код.
Сообщение об ошибке, которое я получаю при попытке запустить скрипт на удаленном компьютере
Enter-PSSession и Exit-PSSession предназначены для интерактивного использования. Не используйте их в неинтерактивных контекстах.
Создание файла сценария PowerShell
В Windows 10 файлы сценариев PowerShell можно создавать с помощью практически любого текстового редактора или консоли интегрированной среды сценариев (ISE).
Создание скрипта с помощью блокнота
Чтобы создать сценарий PowerShell с помощью блокнота, выполните следующие действия:
- Откройте приложение «Блокнот».
- Создайте или вставьте сценарий. Например: Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»
Вышеприведенный скрипт просто выводит на экране фразу «Поздравляем! Ваш первый скрипт успешно выполнен».
Создание сценария с помощью интегрированной среды сценариев
Кроме того, консоль PowerShell ISE можно использовать для кодирования сценариев в Windows 10. Интегрированная cреда сценариев является сложным инструментом, но вы можете начать работу с помощью этих шагов:
-
Откройте системный поиск и введите запрос Windows PowerShell ISE, щелкните правой кнопкой мыши верхний результат, и выберите Запуск от имени администратора или выберите соответствующий параметр в правой колонке.
В PowerShell ISE создайте пустой файл .ps1, в котором можно создать или вставить скрипт. Например:
Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»
Как только Вы выполнили эти шаги с помощью Блокнота или PowerShell ISE, сценарий готов к запуску, но он не будет выполнен. Это происходит потому, что параметры PowerShell по умолчанию всегда настроены на блокирование выполнения любого сценария.
Powershell как запустить программу на удаленном компьютере
Бывают случаи когда для выполнения каких либо задач функционала утилит CSVDE и LDIFDE недостаточно и для решения задачи необходимо использовать PowerShell. Если задача не тривиальная и требует ввода большого количества команд, удобней записать их в один файл и запустить этот файл из PowerShell, чем вводить все в одну строку. Как сделать скрипт и запустить его в PowerShell?- на этот вопрос вы найдете ответ, если прочитаете статью.
Для того чтобы запустить скрипт PowerShell необходимо сделать текстовый файл (txt), набрать в нем необходимые команды, после этого сменить расширение файла на PS1. Если возникли проблемы с изменением расширения файла- оно не отображается, рекомендую прочитать статью- Как сделать видимым расширение файлов .
Теперь необходимо запустить PowerShell («Пуск- Все программы- Стандартные- Windows Power Shell«) и перейдите в папку со скриптом CD D:/ (в данном примере скрипт расположен в корне диска D), после этого запускаем скрипт . например: .script.ps1. Можно другим способом, запустить скрипт PowerShell- прописать весь путь, например D:/script.ps1
При первом запуске выполнении скрипта увидите ошибку:
Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
Чтобы запускать созданные собою скрипты, необходимо либо использовать сертификат более подробно об этом можно узнать если запустит команду get-help about_signing, либо разрешить выполнение ненадежных скриптов с помощью команды Set-ExecutionPolicy remotesigned и подтверждением (Внимание. для выполнения этой команды необходимо запустить PowerShell с правами администратора). После этого можно вновь запустить выполнения скрипта.
Похожие вопросы:
Я пытаюсь сопоставить сетевой диск на удаленном компьютере с помощью команды 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]
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]
Как запустить PowerShell с правами администратора в Windows
Рассмотрим несколько способов.
1. Запуск PowerShell с правами администратора через Меню продвинутого пользователя
Нажмите Win+x и в открывшемся меню выберите пункт «Windows PowerShell (администратор)»:
Если у вас в ОС установлено две версии PowerShell (предустановленная с Windows версия PowerShell 5, а также установленная вручную версия PowerShell 7), то таким образом откроется PowerShell 5.
2. Запуск PowerShell с правами администратора из меню Пуск
Чтобы от имени администратора открыть PowerShell 7 нажмите меню Пуск и введите в поиск «PowerShell», выберите пункт «Run as Administrator»:
3. Как запустить Windows Terminal с правами администратора в Windows
По умолчанию в Windows Terminal используется оболочка PowerShell, поэтому если запустить Terminal с правами администратора, то в нём Terminal также будет с повышенными правами.
Напомним, что терминал не входит в стандартный набор программ Windows 10 и его нужно устанавливать из Microsoft Store. В Windows 11 данная программа установлена по умолчанию.
Перейдите в меню пуск и начните писать «Terminal»:
Если вы не видите пункт «Запуск от имени администратора», то нажмите стрелочку, чтобы развернуть весь список:
Кликните на пункте «Запуск от имени администратора».
4. Как запустить PowerShell с правами администратора в командной строке
Если у вас уже открыта консоль PowerShell с правами обычного пользователя, то прямо из неё вы можете запустить новый процесс PowerShell с повышенными правами:
Эта команда запустит версию PowerShell 5 или PowerShell 6 — в зависимости от того, что у вас установлено в системе по умолчанию. Чтобы запустить последнюю версию, которую вы установили вручную, то есть PowerShell 7, выполните команду:
Invoke-Command
Если вы не хотите использовать pssessions, вы также можете использовать их Invoke-Command на удаленной машине. Вы уже пытаетесь сделать это со своими последними строками кода.
Если вы пойдете по этому пути, помните о проблемах с областью видимости и посмотрите, как передать аргументы в блок сценария .
Я не уверен, почему ваш не работает. Возможно, у вас какие-то ошибки подавляются? Я бы попробовал что-нибудь попроще для пробы. Ваше приложение основано на графическом интерфейсе? Это может не сработать при таком запуске. Попробуйте что-нибудь подобное ipconfig и посмотрите, каковы результаты.
Я бы также рассмотрел цикл while с условием тайм-аута, пока вы ожидаете завершения/запуска процесса на удаленной машине. Это было то, что вы можете лучше учитывать сбои, вместо того, чтобы предполагать, что 10 секунд достаточно.
Спасибо за помощь, в итоге мне пришлось использовать команды pssession и invoke, чтобы получить то, что я пытался выполнить! Спасибо за вашу помощь!
Я думаю, у вас проблемы с локальным/удаленным выполнением.
(Get-WmiObject win32_process -ComputerName $computer -Credential $mycreds | ?<
[H1toH2]
.ProcessName -match «Workbench3.helper» >).Terminate()
Строка выше возвращает все процессы с удаленного компьютера на ваш локальный компьютер. Затем вы устанавливаете возвращенные объекты процесса на свой ЛОКАЛЬНЫЙ компьютер и вызываете Terminate() свой ЛОКАЛЬНЫЙ компьютер. Вместо этого я предлагаю вам использовать следующую строку:
Это должно убить процессы Workbench3. Я использовал like оператор, чтобы сделать фильтрацию менее строгой.
После этого вы можете повторно использовать сохраненный сеанс $pers , чтобы снова запустить процесс.
Invoke-command -session $pers -scriptblock
Я дополнительно использовал -Wait переключатель. Переключатель заставляет Start-Process дождаться запуска программы (и вернуться после этого).
При выполнении удаленных операций я всегда предлагаю выполнять эти операции через Invoke-Command , а не через -ComputerName параметры нескольких команд. Invoke-Command использует WS-MAN через HTTP(S), в то время как удаленная реализация команд, предлагающих -ComputerName параметр, отличается реализацией от командлета к командлету. Это преимущество invoke-command упрощает настройку, например, брандмауэров.
[/H1toH2]