![]() |
Найти процесс на пк в домене и убить его
Нужно найти определенный процесс на компьютерах в домене, и убить его.
|
Добрый день,
Вот моё решение: Код:
$PCName = "TestPC" Можно ли сделать это без помещения процесса в переменную? Не думаю, что стоит удалять пост. На мой взгляд данный форум силен в помощи. Он существует для того, чтобы помогать людям решать практические задачи. |
Цитата:
Код:
... |
Если вместо "завершить процесс" нужно выбрать "завершить дерево процессов" - то каким образом нужно изменить скрипт?
|
А как сделать поиск по всем компьютерам в определенной орг еденице?!
(Что бы убить процесс на всех машинах домене кроме серверов?! ) или из тектового файла (я могу сделать текс фаил с именами компьютеров) например comps.txt |
1) Для поиска в AD.
Код:
$ou = [ADSI]"LDAP://CN=Computers,DC=contoso,DC=com" gwmi "Win32_Process" -filter "Name='$proc'" -ComputerName (gc computers.txt) | %{$_.Terminate()} |
Не надо такие темы закрывать и тем более удалять. Чтобы другие люди потом находили решение вопросов здесь.
|
Всем привет.
Если кому нужно - вот рабочий скрипт, который и был решением вопроса, по поиску процесса "cmd.exe" на всех компьютерах в домене и убиванию его. Код:
$proc = "cmd.exe" |
Не понятно разьесните...
$cred = get-credential $ou = [ADSI]"LDAP://CN=Computers,DC=store,DC=eom,DC=broom" $proc = "cmd.exe" foreach ($child in $ou.children | ? {$_.objectCategory -match "Computer" -and $_.operatingSystem -notmatch "Server"}) { $child | ? {Test-Connection $_.dNSHostName -Count 1 -Quiet } | % { gwmi "Win32_Process" -filter "Name='$proc'" -ComputerName (gc comps.txt) | %{$_.Terminate()} } } с скриптом лежит фаил comps.txt при запуске Get-WmiObject : Сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA) строка:9 знак:7 + gwmi <<<< "Win32_Process" -filter "Name='$proc'" -ComputerName (gc comps.txt) | %{$_.Terminate()} + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException + FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand И процесс в цикле ... а мне бы хотелось что бы цикла не было ... запустил один раз и один раз скрипт закрыл процесс. Если есть возможно после открытие его с указанного пути ... путь \\TT\search\cmd.exe Weterok, а можно тоже самое только что бы имена компьютеров брал из файла comps.txt |
Достаточно только этой строки в скрипте.Вы уж определитесь откуда имена компьютеров будут браться и для файла comps.txt(для тестов укажите полный путь).
gwmi "Win32_Process" -filter "Name='$proc'" -ComputerName (gc comps.txt) | %{$_.Terminate()} |
Цитата:
Я понял. И важно вот еще что. Домена два. И по этому если администратор выполнит скрипт из под своей учетной записи машины из второго домена не закроют процесс. Приходить запускать потом скрипт из под runas можно ли в тело скрипта внедрить запрос авторизации после выполнение скрипта и повторный прогон уже из под учетки дргого домена? ЧТо то на подобии Код:
$proc = "cmd.exe" |
Для этого есть параметр -Credential и не надо никаких двух процессов. В данном случае достаточно отловить ошибку,т.к будет Acess Denied и уже повторно запустить скрипт,но с указанием credentials.
Попробовать использовать: runas,psexec,schtasks на удаленном компьютере с передачей реквизитов залогиненного пользователя. Данные команды можно запустить с помощью WMI метода Create - http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx Хотя у большинства команд есть поддержка удаленного компьютера. |
Тоесть -Credential надо поставить первой строчкой?!
Ошибка вылетает следующая Код:
Get-WmiObject : Сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA) Машина отвечает на запросы Если есть желаени пробежаться по всем машинам в домене найти процесс и занести имя машины в тектовый фаил ... был бы благодарен. |
Решил - проблема с машиной
|
В блоке foreach добавить скажем для примера: % { "Comps:$_" >>result.txt ; $_.Terminate()}
|
Ага, здорово.
Я понимаю я надоел уже небось , но так как я лох в пс можно мне прям код бросить... :) полный |
По пунктам опишите,что и откуда брать и какой вид конечного файла,хотелось бы видеть.
|
Есть домен STORE.LOCAL
На машинах запускается програма которая иногда виснет (причем на всех одновременно, долго расказывать проблемы с корявостью сиквел баз). Задача все автоматизировать 1. Найти все машины с процесом search.exe занести в фаил 2. С помощью вашего скрипта закрыть это процес. |
Скрипт полностью удовлетворяющий всем условиям уже есть в теме - http://forum.oszone.net/post-1687674-8.html .
Остается только запустить на машине входящей в домен. |
Это хороший скрипт. Но у нас более 1000 машин. И запуск такого поиска это займет более часа. А машин около 50 на которых это надо запустить...
Закинуть машины в новую OU не получиться так как есть специфические политики ... |
подскажите пожалуйста как можно пробежаться по списку компов в тхт и вывести список компов на которых запущен определенные процесс? повершел не разу не учил, сегодня появилась задачка почитал понял что повершел для этого идеально подходит но пока что то не могу понять как это сделать? заранее благодарен!
|
все допер сам. спасибо все кто собирался овтетить возможно) решилось следующим образом)
Remove-Item C:\1\powershell\result.txt $proc = "AcsClient.exe" gwmi "Win32_Process" -filter "Name='$proc'" -ComputerName (gc comps.txt) | %{"Comps:$_" >>result.txt ; } |
возник другой вопрос все по тому же списку. а как указать какие параметры выводить в файлик?
|
Цитата:
Цитата:
|
Время: 05:04. |
Время: 05:04.
© OSzone.net 2001-