La administración de procesos mediante powershell se realiza con los siguientes cmdlets

Get-Process
# Handlecount, ProcessName, NonpagedSystemMemorySize, PagedMemorySize, VirtualMemorySize, WorkingSet, TotalProcessorTime
# Handles: The number of handles that the process has opened.
# NPM(K): The amount of non-paged memory that the process is using, in kilobytes.
# PM(K): The amount of pageable memory that the process is using, in kilobytes.
# WS(K): The size of the working set of the process, in kilobytes. The working set consists of the pages of memory that were recently referenced by the process.
# VM(M): The amount of virtual memory that the process is using, in megabytes. Virtual memory includes storage in the paging files on disk.
# CPU(s): The amount of processor time that the process has used on all processors, in seconds.
# ID: The process ID (PID) of the process.
# ProcessName: The name of the process. 
Get-WmiObject -Class Win32_process
Get-ciminstance Win32_process

La diferencia entre cada uno de ellos es la información que muestra de inicio, pero las tres formas refieren a lo mismo. Para mostrar la información completa se utilizan todas las propiedades

Get-Process | select -Property *
Get-WmiObject -Class Win32_process | select -Property *
Get-Ciminstance Win32_process | select -Property *

Si se quiere filtrar información se puede hacer de dos formas

#forma directa
Get-Process -Id 4
Get-Process -Name AdobeUpdateService
Get-WmiObject -Class Win32_process -Filter ("name='AdobeUpdateService.exe'")

#evaluando sus propiedades
Get-Process | Where-Object {$_.BasePriority -lt 10}
Get-WmiObject -Class Win32_process | Where-Object {$_.Priority -gt 8}

Algunas de las tareas que se pueden realizar con la consecución de los cmdlets anteriores son:

Obtener la prioridad del proceso y cambiarla

Get-Process -Name notepad | select Name,BasePriority, PriorityClass
#las posibles prioridades son Idle, BelowNormal, Normal, AboveNormal, High, RealTime"
(Get-Process -Name notepad).PriorityClass = "Idle"
$procesos = Get-Process | Where-Object {$_.BasePriority -lt 5}
foreach($i in $procesos){
    $i.PriorityClass = "Normal"
}

Registrar procesos abiertos / cerrados y actuar ante ello

$acc1 = "Proceso abierto" >>  C:\ruta\abiertos.txt
$acc2 = "Proceso cerrado" >>  C:\ruta\cerrados.txt

Register-WmiEvent -Class Win32_ProcessStartTrace -SourceIdentifier abiertos -Action $acc1
Register-WmiEvent -Class Win32_ProcessStopTrace -SourceIdentifier cerrados -Action $acc2

Get-Event -SourceIdentifier cerrados | select TimeGenerated, @{L="Nombre"; E={$_.SourceEventArgs.newevent.ProcessName}}
$action = { get-history | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
register-wmiEvent -class 'Win32_ProcessStartTrace' -sourceIdentifier "ProcessStarted" -action $action

Los servicios son procesos en segundo plano los cuales son gestionados por el sistema opetativo, de forma que el usuario tan solo será capaz de pararlo arrancarlo o reiniciarlo, pero nuncad de crearlo desde 0. Para la gestión de servicios con powershell

Get-Service | select -Property *
Get-WmiObject -Class Win32_Service
#obtener todos aquellos que se están ejecutando en este momento
Get-WmiObject -Class Win32_Service| Where-Object {$_.State -like 'Running'}
#arrancar o reinicia un servicio
Start-Service -Name
Restart-Service -Name
Stop-Service -Name