44 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
| function Get-UserProcess {
 | |
| <#
 | |
| .SYNOPSIS
 | |
| Remote and local view and stop processes
 | |
| Using Get-Process and Invoke-Command via WinRM
 | |
| .DESCRIPTION
 | |
| Example:
 | |
| Get-UserProcess localhost # default (Run as Administartor)
 | |
| Get-UserProcess localhost -stop # stop process force
 | |
| .LINK
 | |
| https://github.com/Lifailon
 | |
| #>
 | |
| Param (
 | |
| $srv="localhost",
 | |
| [switch]$stop
 | |
| )
 | |
| if ($srv -like "localhost") {
 | |
| $ps_out = ps -IncludeUserName | Sort-Object -Descending CPU | select ProcessName,Product,
 | |
| ProductVersion,UserName,
 | |
| @{Name="Processor Time sec"; Expression={[int]$_.CPU}},
 | |
| @{Name="Processor Time min"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},
 | |
| @{Name="Memory WS"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},
 | |
| @{Name="Memory PM"; Expression={[string]([int]($_.PM / 1024kb))+"MB"}},
 | |
| @{Name="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}},
 | |
| Path | Out-GridView -Title "Local user processes" -PassThru
 | |
| if ($stop -and $ps_out) {
 | |
| $ps_out | Stop-Process -Force
 | |
| }
 | |
| } else {
 | |
| $ps_out = icm $srv {ps -IncludeUserName} | Sort-Object -Descending CPU | select ProcessName,Product,
 | |
| ProductVersion,UserName,
 | |
| @{Name="Processor Time sec"; Expression={[int]$_.CPU}},
 | |
| @{Name="Processor Time min"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},
 | |
| @{Name="Memory WS"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},
 | |
| @{Name="Memory PM"; Expression={[string]([int]($_.PM / 1024kb))+"MB"}},
 | |
| @{Name="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}},
 | |
| Path | Out-GridView -Title "Remote user processes to server $srv" -PassThru
 | |
| if ($stop -and $ps_out) {
 | |
| $session = New-PSSession $srv
 | |
| icm -Session $session {Stop-Process -Name $using:ps_out.ProcessName -Force}
 | |
| Remove-PSSession $session
 | |
| }
 | |
| }
 | |
| } |