Svinkovod.ru

Бытовая техника
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Команда WMIC – выполнить сценарий WMI в командной строке

Команда WMIC – выполнить сценарий WMI в командной строке.

Команда WMIC (Windows Management Instrumentation Command) используется для получения сведений об оборудовании и системе, управления процессами и их компонентами, а также изменения настроек с использованием возможностей инструментария управления Windows ( W indows M anagement I nstrumentation или WMI) .

Инструментарий управления Windows (WMI) – это набор программных средств, обеспечивающий управление системой с использованием сценариев, выполняемых в среде Windows Script Host ( ранее — Windows Scripting Host ) или в командной строке с помощью утилиты WMIC.EXE . Windows Script Host или сокращенно WSH — это компонент Microsoft Windows, предназначенный для запуска сценариев на скриптовых языках JScript и VBScript. Сценарии WSH обычно используются в тех случаях, когда требуется выполнить набор каких-либо действий, требующих написания относительно сложного исходного кода, но нередко в повседневной практике администрирования, удобнее воспользоваться возможностями командной строки WMIC .

Технология WMI — это расширенная и адаптированная под Windows реализация стандарта Web-Based Enterprise Management ( WBEM ), принятого многими крупными компаниями в качестве универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML. В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. Практически, WMI, основанный на CIM, является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.

Программные средства WMI устанавливаются по умолчанию и включают в себя следующие компоненты:

wmimgmt.msc – оснастка консоли MMC, позволяющая в целом управлять самой системой WMI на выбранном компьютере.

Winmgmt.exe – консольная утилита управления WMI. Выполняет аналогичные действия, что и консоль MMC wmimgmt.msc. Кроме того, в Windows 2000 является исполняемым файлом сервиса WMI в системе. Для запуска из консоли используется с опцией /exe (winmgmt.exe /exe). Начиная с Windows XP, исполняемым файлом WMI является библиотека wmisvc.dll , загружаемая с помощью хост-контроллера svchost.exe (Generic Host Process for Win32 Services). В Windows 7-10 утилита winmgmt.exe позволяет выполнить конфигурирование службы WMI как для группы SVChost под именем netsvcs , так и для отдельной группы с именем Winmgmt . В среде Windows 10 группировка служб, запускаемых с помощью svchost.exe , практически не используется – большинству служб соответствует свой собственный процесс svchost.exe.

Wbemtest.exe – графическая утилита для интерактивной работы с WMI. Удобна для тестирования классов и методов, просмотра свойств и т. п.

Wmic.exe – консольная утилита для вызова объектов и методов WMI (WMI Console) – присутствует только в Windows XP и более поздних версиях Windows.

mofcomp.exe – компилятор MOF-файлов. Служит для расширения репозитория WMI и тонких операций с библиотекой классов WMI, а также для обнаружения и исправления ошибок данных репозитория.

Основной каталог данных WMI при стандартной установке Windows — C:WindowsSystem32wbem .

Формат командной строки:

wmic [глобальные параметры]

Если параметры командной строки отсутствуют, то утилита wmic.exe переходит в интерактивный режим, с отображением приглашения к вводу команд:

Подсказку по работе с утилитой wmic.exe можно получить по команде:

wmic /? — отобразить общую справку.

wmic /?:BRIEF — отобразить краткую справку.

wmic /?:FULL — отобразить полную стправку.

Содержание общей справки:

Краткая справка по содержанию практически ничем не отличается от справки по умолчанию, за исключением того, что часть текста заменена на многоточие, например:

VOLUMEUSERQUOTA — Управление квотами для индивидуальных томов хран.

Содержимое полной справки, получаемой по команде wmic /?:full :

Класс (Class) – Класс – это определение объекта WMI. Например, класс процесс (process) определяет все характеристики любого процесса, но не ссылается на какой-либо конкретный процесс.

Объект (Object) – Иногда называется экземпляром класса (instance); Это конкретный набор данных WMI, определенное проявление класса.

Действие (Action) – Также называется методом (method). Действие – это доступная для выполнения функция класса или объекта WMI, некоторая операция, которую мы можете заставить выполнить класс или объект. Например, завершение процесса объектом Process с использованием метода delete, как это рассматривается ниже.

Свойства — параметры объекта.

Путь объекта — путь WMI для использования при обращении к экземпляру или классу.

Псевдоним — определение классов WMI, применяемое в WMIC. Псевдонимы упрощают обращение к классам и свойствам. Они также предоставляют действия, облегчающие работу с классами. Псевдонимы могут включать средства для работы с классами на удаленном компьютере, а также на нескольких компьютерах.

Читайте так же:
Лучшие маленькие колонки для компьютера

Утилита WMIC создана для удобства применения WMI непосредственно из командной строки, поэтому наиболее используемые классы WMI доступны под заранее определенными псевдонимами (ALIAS). Также, имеется возможность самостоятельного определения псевдонимов для тех классов, для которых это еще не сделано, или добавить новые псевдонимы для тех классов WMI, которые уже их имеют.

Утилита WMIC предоставляет три основных параметра для управления отображением данных:

/OUTPUT – вывод во внешний файл.

/FORMAT – позволяет форматировать информацию.

/TRANSLATE – настройка вывода специальных символов.

Кроме вывода в файл, возможен вывод в буфер обмена, если задан параметр /OUTPUT:CLIPBOARD . В качестве дополнительного средства протоколирования вместо параметра /OUTPUT можно использовать параметр /RECORD: . Для отмены протоколирования в интерактивном режиме используется параметр /RECORD:””

Форматы выводимых данных:

CSV – вывод данных в одну строку, с разделителем в виде запятой.

HFORM – информация отображается в виде списка, оформленного в HTML-формате. Отображается две колонки — название объекта и его значение.

HTABLE – формат вывода данных в виде HTML таблицы.

LIST – вывод свойства и его значения происходит в отдельной строке.

MOF – собственно, информация преобразуется в формат MOF.

RAWXML – вывод данных в XML файл.

TABLE – табличный формат вывода данных.

VALUE – аналогично значению LIST.

XML – вывода данных в XML файл, но с дополнительной информацией.

Параметр /TRANSLATE используется совместно с оператором GET в тех случаях, когда есть необходимость вывода символов, стандартно используемых для форматирования текста или разделения полей. В среде WMIC поддерживаются таблицы BasicXml и NoComma

Необходимо учитывать тот факт, что формат вывода данных и их вид будет зависеть от порядка следования параметров /TRANSLATE и /FORMAT:

— Если /TRANSLATE следует раньше чем /FORMAT, то сначала выполняется преобразование, а затем форматирование выводимых данных.

— Если /FORMAT идет раньше /TRANSLATE, то сначала выполняется форматирование, а затем – преобразование.

Примеры использования WMIC для работы с процессами.

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

wmic alias list brief

Для класса Win32_Process предусмотрен псевдоним Process . Соответственно, для получения подсказки можно воспользоваться командой:

Отображаемая справка для Windows 10:

Для получения списка процессов используется параметр LIST . Для получения подсказки по форматам и параметрам LIST можно использовать команду:

wmic process list /?

Для получения списка процессов, отображаемого в кратком формате, используется команда:

wmic process list brief

Пример выводимой информации:

Для вывода сведений о процессах в html-файл:

wmic /output:c:proclist.htm process list /format:htable

Параметр /output задает имя файла с результатами, а параметр /format — формат выводимых данных.

wmic /output:proclist1.htm process list /format:hform — вывод результатов в HTML-файл в виде списка процессов с двумя колонками из названия свойства и его значения.

Для получения списка процессов на удаленной системе используется команда:

wmic /user:»Admin» /password:»admpass» /node:»Comp0″ process list brief

В команде указываются имя пользователя и пароль для подключения к удаленной системе указанной параметром /node: . Если имя пользователя и пароль не заданы, то используется учетная запись текущего пользователя. Вместо имени компьютера можно задавать его IP-адрес:

wmic /node:”192.168.1.132” process list brief

Если имена компьютеров содержат специальные символы, то они должны заключаться в двойные кавычки:

wmic /node:”server-01” process list brief

Возможно указание списка имен или IP-адресов удаленных компьютеров:

wmic /node:”server-01”,”192.168.0.1” process list brief

Параметр /node может включать либо список компьютеров, либо имя текстового файла со списком. Файл должен содержать имена компьютеров, разделенные запятой, или набор строк с именами по одному в строке. При использовании списка удаленных компьютеров из файла, перед его именем в параметре /node должен присутствовать символ @ :

wmic /node:”@C:comps.txt” process list brief

При обработке списка компьютеров, взятого из текстового файла, какие-либо из перечисленных компьютеров могут быть выключены, поэтому, для сокращения времени выполнения команды, желательно использовать параметр /FAIFAST:ON , который позволит исключить применение команды по отношению к узлам, не отвечающим на эхо-запрос (не отвечающим на ping):

wmic /failfast:on /node:”@C:comps.txt” process list status

Для опроса состояния конкретного процесса, например браузера Chrome можно использовать команду:

Читайте так же:
Источник бесперебойного питания с внешним аккумулятором

wmic process where name=”chrome.exe” list status

Для принудительного завершения процесса используется команда:

wmic process where name=”chrome.exe” delete

wmic process where name=”chrome.exe” call terminate

Для запуска программы на локальном компьютере:

wmic process call create «C:Program Files (x86)GoogleChromeApplicationchrome.exe» Для запуска программ на удаленных компьютерах используется параметр /node , рассмотренный выше и полные пути исполняемых файлов относительно удаленной системы.

Примеры использования WMIC для получения сведений о компонентах системы.

WMIC OS LIST BRIEF — отобразить краткие сведения о системе.

wmic OS GET Name — отобразить версию ОС Windows и устройство загрузки.

WMIC OS GET csname,bootdevice,localdatetime — отобразить имя компьютера, устройство загрузки, локальные дату и время.

WMIC OS GET locale, oslanguage, codeset — отобразить данные локализации Windows

WMIC OS GET osarchitecture /value — отобразить архитектуру системы (разрядность Windows, например — значение OSArchitecture=64-bit для 64-разрядной системы)

WMIC QFE list brief — отобразить список обновлений Quick Fix Engineering (QFE) Windows.

wmic qfe list brief | find “311” — отобразить список обновлений Windows, в названии которых присутствует 311 .

WMIC QFE get hotfixid,description,installedOn — отобразить список обновлений Windows, включающий название, краткое описание и дату установки.

WMIC DISKDRIVE get name,size,model — отобразить список физических дисков, содержащих название модели, имя в системе и размер.

WMIC PARTITION list brief — отобразить список всех разделов на всех дисках.

WMIC LOGICALDISK list brief — отобразить список логических дисков.

WMIC LOGICALDISK where drivetype=4 get FreeSpace,ProviderName — отобразить свободное место и путь для сетевых дисков (drivetype=4)

WMIC LOGICALDISK where drivetype!=4 get freespace, description — отобразить свободное место и описание для локальных дисков, включая CD/DVD и съемные устройства хранения данных.

WMIC LOGICALDISK where description=’Local Fixed Disk’ get deviceid, volumename — отобразить идентификаторы (буквы дисков) и метки томов для всех локальных логических дисков.

WMIC SERVICE list brief | more — отобразить список системных служб в постраничном режиме.

WMIC SERVICE where state=”running” GET caption,name,state /format:list — отобразить список, включающий отображаемые имена, короткие имена и статус работающих системных служб.

WMIC SERVICE where state=”Stopped” GET caption,name,state /format:list — отобразить список, включающий отображаемые имена, короткие имена и статус остановленных системных служб.

WMIC SERVICE where name=’WinRM’ CALL STARTSERVICE — запустить службу удаленного управления Windows (WinRM)

WMIC SERVICE where name=’WinRM’ GET name,state — проверить состояние службы WinRM.

WMIC PRINTER LIST STATUS — отобразить список принтеров и их состояние.

WMIC BASEBOARD list brief — отобразить общую информацию о материнской плате компьютера.

wmic bios get Manufacturer — отобразить сведения о производителе BIOS.

wmic bios get smbiosbiosversion — отобразить версию BIOS.

wmic bios get Description — отобразить описание производителя BIOS.

WMIC MEMORYCHIP list brief — отобразить сведения о модулях памяти компьютера.

WMIC MEMORYCHIP GET Devicelocator,Capacity — отобразить сведения о размещении и емкости модулей памяти DIMM.

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

VBScript и PSEXEC-удаленное выполнение приложения

Я обновляю существующее приложение HTA. На этой странице отображаются записи каждой машины в компании, которая не выполняла резервное копирование (через ibm tsm) в течение последних 3 дней. Я сделал кнопку для каждой записи, которая при нажатии должна выполнять процесс cscript с использованием PSEXEC, который запускает exe на целевой машине и передает аргумент. (dsmc.exe INCREMENTAL) Теперь я могу вручную открыть приглашение cmd, использовать команду Remote cmd для создания удаленного cmd и запустить приложение просто отлично. Но без дополнительного шага создания удаленного приглашения cmd и попытки

Только приводит к ошибке. Я знаю, что должна быть возможность удаленно выполнить эту программу и все равно передать аргумент, но она просто не запускается. И когда я создаю удаленную подсказку cmd с помощью

Любые другие строки в сценарии выполнения не выполняются до тех пор, пока я не выйду из командной строки remote cmd.

Есть ли секрет PSEXEC, который я не понимаю, или способ захватить существующую подсказку cmd (удаленную, которую я только что создал) и передать ей команду для выполнения? Пожалуйста, Помогите

*Note, это не первый мой сценарий, использующий PSEXEC. Обычно я использую свой VBScript для создания batch file локально с содержащимся сценарием PSEXEC, а затем выполняю его. Никогда не мог заставить wsshell.run работать с PSEXEC.

Читайте так же:
Май скрипт калькулятор для компьютера

1 ответ

  • PSEXEC успешно запускается через командную строку, но терпит неудачу в ASP .Net/C#

Я пытаюсь запустить команду на удаленной машине с помощью инструмента PSEXEC, он успешно работает с помощью командной строки, но он терпит неудачу в проекте asp.net, показывая следующую ошибку вывода. PsExec v2.11-удаленное выполнение процессов Copyright (C) 2001-2014 Mark Руссинович.

Я провожу некоторые исследования, чтобы найти лучший и наиболее эффективный метод для этого. Мне нужно будет выполнить удаленные сценарии на нескольких оконных серверах/компьютерах (пока мы их создаем). У меня есть веб-приложение, которое собирается автоматизировать эту задачу, в настоящее время у.

Вот (более или менее) мой синтаксис для использования objShell.Run для работы с psexec :

Set objShell = CreateObject(«Wscript.Shell»)
objShell.Run «cmd.exe /c «»%pathToPsexec%psexec.exe»» -accepteula -s -i -d \RemoteMachine cmd.exe /k ipconfig»,0,True

Это всего лишь пример, но он показывает, что вы можете отправлять вложенные переключатели и т. Д. Также важно понимать переключатели psexec.

-accepteula — настоящим принимается лицензионное соглашение на psexec. в этом нет необходимости, если вы не запускаете его в первый раз и не хотите, чтобы он был тихим.
-s — запускается как системная учетная запись удаленного компьютера. Если вы не используете это, вам нужно указать -u и -p , если вы хотите работать в интерактивном режиме. В противном случае ваши учетные данные выполняют вход в сеть
-i — указывает на запуск в интерактивном режиме. Это можно опустить или указать сеанс.
-d — не ждите завершения удаленной команды, прежде чем двигаться дальше

Похожие вопросы:

Я пишу приложение C#, которое запускает выполнение скрипта powershell на удаленном сервере. Машина, с которой вызывается выполнение (local dev box), имеет Powershell версии 2, версии 3 и версии 4.

Попытка удаленного запуска команды chef-client. Для этого я установил PSEXEC. Когда я пытаюсь запустить ipconfig, он работает нормально и дает правильный результат. Но chef-client не работает.

Сценарий : Система 1 (Удаленная Машина) : abc.bat xyz.vbs Оба файла находятся на диске D Сценарий: abc.bat вызывает xyz.vbs, и команда выглядит следующим образом: cscript D:xyz.vbs У xyz.vbs есть.

Я пытаюсь запустить команду на удаленной машине с помощью инструмента PSEXEC, он успешно работает с помощью командной строки, но он терпит неудачу в проекте asp.net, показывая следующую ошибку.

Я провожу некоторые исследования, чтобы найти лучший и наиболее эффективный метод для этого. Мне нужно будет выполнить удаленные сценарии на нескольких оконных серверах/компьютерах (пока мы их.

Мне нужен правильный способ сделать это через a vbscript. Это прекрасно работает из командной строки: psexec \99.99.99.99 -u username -p password cmd.exe /c ver > output.txt От vbscript.

Я запускаю TeamCity версию 7.1.4 с шагом, который использует PSEXEC для запуска batch file на удаленной машине. batch file должен извлекать файлы и развертывать их. Запуск PSEXEC из командной строки.

Работает ли psexec против Windows 10 удаленных хостов? Я запускаю psexec с машины Windows 7. Когда удаленный хост равен Windows 8.1, он работает, когда удаленный хост равен Windows 10, он терпит.

Проблема Выполнение PSExec как процесса из C# с включенным асинхронным перенаправлением мои обработчики событий, полученных данными, никогда не вызываются. Контекст У меня есть приложение C#.

У меня есть приложение .hta , которое принимает два аргумента командной строки. Выполнение приложения на удаленной машине через командную строку работает следующим образом (командная строка -.

PowerShell: используем Invoke-Command для запуска команд/скриптов на удаленных компьютерах

date04.08.2021
useritpro
directoryPowerShell, Windows 10, Windows Server 2016
commentsкомментариев 5

В этой статье мы рассмотрим особенности использования командлета Invoke-Command для удаленного выполнения команд и скриптов. Возможно запускать команды удаленно на одном компьютере, или параллельно на множестве компьютерах в вашей сети. Командлет Invoke-Command использует возможности удаленного управления, заложенные в PowerShell Remoting. PowerShell Remoting позволяет удаленно подключаться к PowerShell сессиям на компьютерах через службу WinRM (Windows Remote Management) через протокол Web Services for Management (WS-Management). Этот сервис дает возможность принимать команды Powershell и устанавливать сеансы.

Настройка WinRM для PowerShell Remoting

Для связи между компьютерами в PowerShell Remoting используется протокол HTTP (порт TCP/5985) или HTTPS (порт TCP/5986). По умолчанию используется протокол HTTP, но даже этот трафик шифруется с помощью ключа AES-256 (впрочем, есть угроза атак man-in-the middle). Возможна аутентификация через Kerberos (в домене) или NTLM.

Читайте так же:
Микрокомпьютер raspberry pi 3 model b 1gb

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

Если служба не запущена, запустите ее:

Enable-PSRemoting включить и настроить winrm в Windows

Данная команда запустит службу WinRM (установит автоматический запуск), выставит настройки winrm по-умолчанию и добавит исключение в Windows Firewall. Команда Enable-PSRemoting –Force включает WinRM без запроса пользователя.

Теперь к компьютеру можно подключиться удаленно через PowerShell Remoting.

Также нужно включить правило Window Defender Firewall, которое разрешает доступ к WinRM в общедоступных сетях. Вы можете включить правило брандмауэра с помощью GPO или PowerShell:

Set-NetFirewallRule -Name ‘WINRM-HTTP-In-TCP’ -RemoteAddress Any

Чтобы проверить подключение к удаленному компьютер через PowerShell Remoting используется команда:

Test-WsMan - проверить работу winrm на удаленном компьютере

Если у вас нет домена, или вы обращаетесь к компьютерам через PowerShell Remoting по IP адресам, в этом случае используется для аутентификации используется протокол NTLM. При использовании NTLM, при выполнении команду Invoke-Command появится ошибка:

Invoke-Command Default authentication may be used with an IP address under the following conditions: thetransport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided

Для корректной работы NTLM аутентификации, на компьютере, с которого вы будете устанавливать подключения нужно выполнить дополнительные действия: выпустить SSL сертификат и исопльзовать его для шифрования HTTPS трафика winrm, или добавить имя/IP адрес хоста в доверенные:

Set-Item wsman:localhostClientTrustedHosts -value 192.168.1.201

Set-Item wsman:localhostClientTrustedHosts

Либо можно разрешить подключение ко все компьютерам (не рекомендуется, т.к. один из главных недостатков NTLM – он не осуществляет проверку подлинности).

Set-Item wsman:localhostClientTrustedHosts -value *

Аналогичные настройки нужно сделать на удаленных хостах.

Чтобы вывести список доверенных хостов, выполните команду:

Чтобы применить изменения, перезапустите службу WinRM:

Удаленное выполнение PowerShell с помощью Invoke-Command

Командлет Invoke-Command позволяет выполнить команду на одном или нескольких удаленных компьютерах.

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

Invoke-Command -ComputerName dc01 -ScriptBlock

Invoke-Command -ComputerName -ScriptBlock - запуск команд powershell на удаленном компьютере через winrm

Эта команда выведет в вашу консоль значение версии PowerShell, установленной на удаленном компьютере, имя которого указано в параметре -ComputerName . В блоке -ScriptBlock <[cmdlet]>указывается команда, которую нужно запусть на удаленном компьютере.

По-умолчанию команда, посланная через Invoke-Command выполняется на удалённом компьютере от текущего пользователя. Если нужно выполнить команду от имени другого пользователя, сначала нужно запросить учетные данные пользователя и сохранить их в переменную:

$cred = Get-Credential
Invoke-Command -ComputerName comp-buh2 -Credential $cred -ScriptBlock

Можно задать несколько команд в блоке ScriptBlock, их нужно разделить точкой с запятой. Например следующая команда выведет текущий часовой пояс и изменит его на другой:

Invoke-Command -Computername dc01 -ScriptBlock

Invoke-Command несколько команд в блоке ScriptBlock

Invoke-Command позволяет выполнять не только отдельные команды, но и запускать скрипты PowerShell. Для этого используется аргумент -FilePath (вместо –ScriptBlock). При этом вы указываете путь к локальному PS1 файлу скрипта на вашем компьютере (вам не нужно копировать файл скрипт на удаленный компьютер):

Invoke-Command -ComputerName Server01 -FilePath c:PSScriptsGetComputerInfo.ps1

Используем Invoke-Command для параллельного запуска команд на нескольких компьютерах

Командлет Invoke-Command можно использовать для параллельного выполнения команд на нескольких удаленных компьютерах.

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

Invoke-Command server1, server2, server3 -ScriptBlock

Invoke-Command параллельный запуск команд на нескольких компьютрах

Список компьютеров можно поместить в переменную (массив):

$servers = @(″server1″,″server2″,″server3″)
Invoke-Command -ScriptBlock < get-date>-ComputerName $servers

Или получить из текстового файла:

Invoke-Command -ScriptBlock -ComputerName(Get-Content c:psservers.txt)

Также можно получить список компьютеров в ADс помощью командлета Get-ADComputer из модуля AD PowerShell:

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

$computers = (Get-ADComputer -Filter ‘operatingsystem -like «*Windows server*» -and enabled -eq «true»‘).Name
Invoke-Command -ComputerName $computers -ScriptBlock -ErrorAction SilentlyContinue

Если компьютер выключен, или недоступен, благодаря параметру SilentlyContinue скрипт не будет остановлен и продолжит выполнение на других компьютерах.

Чтобы понять с какого компьютера получены результаты, нужно использовать специальную переменную окружения PSComputerName.

$results = Invoke-Command server1, server2, server3 -ScriptBlock
$results | Select-Object PSComputerName, DateTime

Invoke-Command вернуть результы с каждого компьютера через PSComputerName

При запуске команды через Invoke-Command на нескольких компьютерах она выполняется параллельно. В Invoke-Command есть ограничение на максимальное количество компьютеров, которыми можно управлять одновременно (ограничение на количество одновременных PSSession). Оно определяется параметром ThrottleLimit (по умолчанию 32). Если вам нужно выполнить команду одновременно более чем на 32 компьютерах (например, на 128), используйте параметр –ThrottleLimit 128 (но это вызывает повышенную нагрузку на ваш компьютер).

Читайте так же:
Лучшие производители блоков питания для компьютеров

Для запуска команд на удаленных компьютерах через Invoke-Command в фоновом режиме используется специальный атрибут –AsJob . В этом случае результат выполнения команды не возвращается в консоль. Чтобы получить результаты нужно использовать командлет Receive-Job .

Если вы хотите запускать команды на удаленном компьютере интерактивно, используйте командлет Enter-PSSession.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Запуск скрипта vbs на удаленном компьютере

Задача такая:
ОС WinXP/Win7
нужно запустить программу/скрипт на удаленном ПК
соблюдая несколько простых условия:
1. запуск программы/скрипта происходит на удаленном ПК в ответ на какие то действия на управляющем ПК
т.е. путем нажатия условной кнопки, запуска скрипта или наступления какого либо другого события на управляющем ПК
2. возможность выбора пользователя под которым будет происходит выполнение программы/скрипта
(или под пользователем под которым загружен удаленный ПК или управляющий ПК)
3. без установки дополнительных программ

Пользователь управляющего ПК(под которым мы работаем) имеет админские права и на нашем и на удаленном ПК.

Ну и второй вопрос на связанную тему.
Я знаю что такие штуки как Psexec или DameWare работают через свои службы которые они опять таки устанавливают и запускают на удаленном ПК.
И насколько я понимаю они используют не какие то дыры, а вполне официальные механизмы.

На мой взгляд вполне логично иметь возможность и права запускать код на любом из администрируемых ПК.

P.S.
С помощью Psexec я могу запускать некоторые нужные мне команды.
Но при этом упорно не запускаются скрипты VBS.

P.S.S. Мне кажется что нужно копать в сторону wmi.

От: merlin88
Дата:08.04.15 06:31
Оценка:

Здравствуйте, Cicero, Вы писали:

C>1. запуск программы/скрипта происходит на удаленном ПК в ответ на какие то действия на управляющем ПК
C>т.е. путем нажатия условной кнопки, запуска скрипта или наступления какого либо другого события на управляющем ПК
C>2. возможность выбора пользователя под которым будет происходит выполнение программы/скрипта
C>(или под пользователем под которым загружен удаленный ПК или управляющий ПК)
C>3. без установки дополнительных программ

Не факт что подойдет по пункту 3.
Рассматривали nncron? http://www.nncron.ru/

От: acDev
Дата:10.04.15 18:49
Оценка:

Здравствуйте, Cicero, Вы писали:

C>С помощью Psexec я могу запускать некоторые нужные мне команды.
C>Но при этом упорно не запускаются скрипты VBS.

Относительно недавно писал аналог PsExec с блек-джеком и ш.
Сложность была не в запуске под опред. пользователем, а в работе PowerShell с консолью http://rsdn.ru/forum/winapi/5781011

От: Cicerowww.ya.ru
Дата:10.04.15 20:52
Оценка:

D>PsExec запускает удалённый сервис через IPC, а моя утиль — через WMI.CreateProcess (далее процесс при необходимости запускает сервис).
Я в начале года начал было изучать PowerShell, но выяснил что не во всех ПК которые я обслуживаю он установлен(или старая версия).
Поэтому пока с PowerShell притормозил.
Пока пытался все решить через psexec, но видимо придется изучать WMI.
Чувствую что мне тоже придется с ним дружить.
D>Утиль выложить не могу, т.к. заказчик крайне против.
Это понятно.
Мне бы подсказок — в какую сторону грести, было бы легче.
Сам я программы не пишу(только скрипты и батники), но чувствую что до этого может дойти, если ничего подходящего не найду.

Спасибо за ответ!

От: akasoft
Дата:11.04.15 09:51
Оценка:

Здравствуйте, Cicero, Вы писали:

C>Но при этом упорно не запускаются скрипты VBS.

Обычно там есть какое-то сообщение об ошибке в консоли или журналах.

От: kochetkov.vladimirhttps://kochetkov.github.io
Дата:14.04.15 11:59
Оценка:

Здравствуйте, Cicero, Вы писали:

C>С помощью Psexec я могу запускать некоторые нужные мне команды.
C>Но при этом упорно не запускаются скрипты VBS.

От: Cicerowww.ya.ru
Дата:15.04.15 04:49
Оценка:

Нет.
Почитаю(с англицким у меня не очень).
А там есть решение задачи: запуск скрипта на удаленной машине под правами пользователя авторизованного в данный момент?

От: kochetkov.vladimirhttps://kochetkov.github.io
Дата:15.04.15 08:59
Оценка:

Здравствуйте, Cicero, Вы писали:

C>А там есть решение задачи: запуск скрипта на удаленной машине под правами пользователя авторизованного в данный момент?

Нет, там про проблемы запуска vbs с помощью psexec. Как выполнить код в контексте текущего пользователя я ответил в КСВ.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector