วันพฤหัสบดีที่ 27 พฤษภาคม พ.ศ. 2564

การใช้ Powershell run program และ kill program ร่วมกับ regex

 File powershell จะนามสกุล .ps1

comment ใช้ # นำหน้า

การเรียก process ใช้ & นำหน้า

มี argument ใช้    param($ตัวแปร)

ตัวอย่าง เป้นการ list process ทีเปิดport ใว้

การ filter ให้ใช้ regex 



# kill process select port

Write-Output "Kill process at port"

param ($port)

$foundProcesses = netstat -ano | findstr :$port

$activePortPattern = ":$port\s.+LISTENING\s+\d+$"

# search between number and string

$pidNumberPattern = "\d+$"

# if search between number use "\d+\d"

#If 

IF ($foundProcesses | Select-String -Pattern $activePortPattern -Quiet) {

  $matches = $foundProcesses | Select-String -Pattern $activePortPattern

  $firstMatch = $matches.Matches.Get(0).Value

#Match by regex

  $pidNumber = [regex]::match($firstMatch, $pidNumberPattern).Value

  taskkill /pid $pidNumber /f

}


อีกตัวอย่าง เอา title ของ process และมา kill. โดยใช้ Get-Process

#& TASKLIST /v /fo table | findstr "PCS"
param ($port)

$findV = Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize | findstr /I 'PCS' | findstr $port
IF($findV){
$pid1= [regex]::match($findV,"\d+\d").Value

$pid1
#kill it
 taskkill /pid $pid1 /f
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น