none
Prozesse nach User als Kriterium beenden RRS feed

  • Frage

  • Hallo liebe Forum Member

    Ich Filter Prozesse nach Namen und Owner aus, aber kann diese bestimmten Prozesse nicht beenden. Wenn ich anschließend die Prozesse mit dem Usernamen beenden will beendet PS alle Prozesse.

    Hier mein Code:

    $prozesse = Get-WmiObject Win32_Process | Where{$_.Name -eq 'powershell.exe'}
    
    $alleprozesse=foreach ($prozess in $prozesse) {
     Add-Member -MemberType NoteProperty -Name Owner -Value ($prozess.GetOwner().User) -InputObject $prozess -PassThru  
    }  
    
    $alleprozesse | Select owner,ProcessId,Name | Where{$_.Owner -eq "Benutzername"} 

    Diese Auswahl will ich beenden.

    Dienstag, 24. Juli 2012 14:17

Antworten

  • entweder so :

    $Prozessname = 'powershell.exe'
    $Username = 'Benutzername'
    
    $prozesse = Get-WmiObject Win32_Process | Where{$_.Name -eq $Prozessname}
    
    $alleprozesse=foreach ($prozess in $prozesse) {
     Add-Member -MemberType NoteProperty -Name Owner -Value ($prozess.GetOwner().User) -InputObject $prozess -PassThru  
    }  
    
    $alleprozesse | Where{$_.Owner -Like $Username}  | foreach {Stop-Process -Id $_.ProcessId}

    Oder mit besserer nutzung der Pipeline:

    $Prozessname = 'powershell.exe'
    $Username = 'Benutzername'
    
    Get-WmiObject Win32_Process | Where-Object {$_.Name -eq $Prozessname} | ForEach-Object {
       
       If ($_.GetOwner().User -eq $Username ) {
            Stop-Process -Id $_.ProcessId
       } # end if 
        
    } # end ForEach-Object
     

    Es gibt in der Powershell zwei verschiedene ForEach !!

    Lies bitte dazu :

    Get-Help about_Foreach
    und
    Get-Help ForEach-Object


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '




    • Bearbeitet Peter Kriegel Dienstag, 24. Juli 2012 15:09
    • Als Antwort markiert Ali0311 Freitag, 27. Juli 2012 07:26
    Dienstag, 24. Juli 2012 15:04

Alle Antworten

  • entweder so :

    $Prozessname = 'powershell.exe'
    $Username = 'Benutzername'
    
    $prozesse = Get-WmiObject Win32_Process | Where{$_.Name -eq $Prozessname}
    
    $alleprozesse=foreach ($prozess in $prozesse) {
     Add-Member -MemberType NoteProperty -Name Owner -Value ($prozess.GetOwner().User) -InputObject $prozess -PassThru  
    }  
    
    $alleprozesse | Where{$_.Owner -Like $Username}  | foreach {Stop-Process -Id $_.ProcessId}

    Oder mit besserer nutzung der Pipeline:

    $Prozessname = 'powershell.exe'
    $Username = 'Benutzername'
    
    Get-WmiObject Win32_Process | Where-Object {$_.Name -eq $Prozessname} | ForEach-Object {
       
       If ($_.GetOwner().User -eq $Username ) {
            Stop-Process -Id $_.ProcessId
       } # end if 
        
    } # end ForEach-Object
     

    Es gibt in der Powershell zwei verschiedene ForEach !!

    Lies bitte dazu :

    Get-Help about_Foreach
    und
    Get-Help ForEach-Object


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '




    • Bearbeitet Peter Kriegel Dienstag, 24. Juli 2012 15:09
    • Als Antwort markiert Ali0311 Freitag, 27. Juli 2012 07:26
    Dienstag, 24. Juli 2012 15:04
  • Vielen Dank für die schnelle Antwort. Ich habe bereits semantisch an das selbe gedacht, konnte es aber leider von der Syntax her nicht umsetzen. Warum auch immer.
    Freitag, 27. Juli 2012 07:29