Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] убить процессы через утилиту (http://forum.oszone.net/showthread.php?t=348199)

geepnozeex 11-03-2021 19:23 2952308

убить процессы через утилиту
 
приветствую.
есть несколько процессов, которые нужно убить с помощью утилиты - pskill
в батнике я делаю так -
Код:

for %%A IN (процесс.exe процесс.exe процесс.exe) DO %~dp0\pskill64 %%A -accepteula -t
интересует аналог этого решения для powershell.

DJ Mogarych 11-03-2021 23:11 2952325

Код:

kill -name процесс,процесс,процесс

geepnozeex 12-03-2021 08:04 2952346

DJ Mogarych, если бы это было возможным, то я бы не прибегал к сторонней утилите.

Elven 12-03-2021 10:12 2952355

geepnozeex, а невозможно потому, что?..

geepnozeex 12-03-2021 10:18 2952357

Elven, отказано в доступе.
хочу сделать что-то вроде этого -
Код:

'процесс.exe','процесс.exe' | start-process "C:\pskill64" -arg "-accepteula -t"
но данные не передаются по конвейеру.

Elven 12-03-2021 10:29 2952359

Код:

(process1.exe,process2.exe) | ForEach-Object {echo $_}
echo соответственно меняем на этот пкилл, я его не юзал потому хз как там что с ним будет.
в доступе отказано вполне вероятно из-за неповышенных прав, но это нужно смотреть и ковыряться.

geepnozeex 12-03-2021 12:02 2952368

Цитата:

Цитата Elven
в доступе отказано вполне вероятно из-за неповышенных прав, но это нужно смотреть и ковыряться. »

SecurityHealthService.exe и с правами trustedinstaller не убьёшь, поэтому и использую pskill.
ещё заморочка небольшая - вот так с указанием прямого пути всё работает -
Код:

'SecurityHealthService.exe','smartscreen.exe' | Foreach{C:\pskill64 -accepteula -t $_}
но стоит использовать переменную в пути к утилите
Код:

Foreach{"$PSScriptRoot\pskill64 -accepteula -t $_"}
не работает.

Elven 12-03-2021 14:39 2952374

Сходу не скажу, возможно пойдет вот с таким костылем, если нужно именно использование переменной.
Код:

{
Start-Process -FilePath "$PSScriptRoot\pskill64" -ArgumentList "-accepteula","-t"," $_"
}


Iska 12-03-2021 21:37 2952438

Честно говоря, вообще не пойму, с чем проблемы.

Например, у меня pskill64.exe расположен по адресу C:\Program Files (x86)\Sysinternals.com\Sysinternals Suite, и, следовательно:
Код:

'notepad.exe', 'calc.exe' | ForEach-Object -Process {
    Start-Process -FilePath ([System.IO.Path]::Combine([System.Environment]::GetFolderPath("ProgramFilesX86"), 'Sysinternals.com\Sysinternals Suite\pskill64.exe')) -ArgumentList @('-accepteula', '-t', $_)
}

что, собственно, ничем не отличается от кода коллеги Elven выше.

geepnozeex 12-03-2021 22:27 2952444

Цитата:

Цитата Iska
Честно говоря, вообще не пойму, с чем проблемы. »

проблема была в использовании переменной $PSScriptRoot вместо указанного пути к pskill
Я так сделал -
Код:

'SecurityHealthService.exe','SecurityHealthSystray.exe','smartscreen.exe' | %{&"$PSScriptRoot\pskill" "-accepteula" "-t" "$_"}
а без переменной работает так -
Код:

%{C:\pskill64 -accepteula -t $_}


Время: 22:43.

Время: 22:43.
© OSzone.net 2001-