Fix cmd_or_ps.ps1 script with pwsh7

gwmi command does not exist any more and is replaced by Get-CimInstance.
See https://github.com/PowerShell/PowerShell/issues/4766.

While at it, use a do..while loop to avoid duplicated lines.

Fixes: #10820
pull/10838/head
Xavier Claessens 2 years ago committed by Xavier Claessens
parent 496dce0666
commit bb4c8c07f8
  1. 19
      mesonbuild/scripts/cmd_or_ps.ps1

@ -1,22 +1,17 @@
# Copied from GStreamer project # Copied from GStreamer project
# Author: Seungha Yang <seungha.yang@navercorp.com> # Author: Seungha Yang <seungha.yang@navercorp.com>
# Xavier Claessens <xclaesse@gmail.com>
$i=1 $i=1
$ppid=(gwmi win32_process -Filter "processid='$pid'").parentprocessid $ppid=$PID
$pname=(Get-Process -id $ppid).Name do {
While($true) { $ppid=(Get-CimInstance Win32_Process -Filter "ProcessId=$ppid").parentprocessid
$pname=(Get-Process -id $ppid).Name
if($pname -eq "cmd" -Or $pname -eq "powershell" -Or $pname -eq "pwsh") { if($pname -eq "cmd" -Or $pname -eq "powershell" -Or $pname -eq "pwsh") {
Write-Host ("{0}.exe" -f $pname) Write-Host ("{0}.exe" -f $pname)
Break Break
} }
# not found yet, find grand parent
# 10 times iteration seems to be sufficient # 10 times iteration seems to be sufficient
if($i -gt 10) {
Break
}
# not found yet, find grand parant
$ppid=(gwmi win32_process -Filter "processid='$ppid'").parentprocessid
$pname=(Get-Process -id $ppid).Name
$i++ $i++
} } while ($i -lt 10)

Loading…
Cancel
Save