salut,
Parceque la gestion des processus est vitale dans la vie d'un administrateur, powershell nous a offert 5 cmdlet complémentaires:
Get-Process Stop-Process Wait-Process Debug-Process Start-Processle visionnage des process se fait simplement par "Get-Process" l'idéee de Watch-Process est d'étendrre les capacitées de 'Get-Process' pour monitorer un ou plusieurs process par un intervalle de temps personnalisable, en local ou à distance:
function Watch-Process { <# .ForwardHelpTargetName Get-Process .ForwardHelpCategory Cmdlet #> [CmdletBinding(DefaultParameterSetName='Name')] param( [Parameter(ParameterSetName='Name', Position=0, ValueFromPipelineByPropertyName=$true)] [Alias('ProcessName')] [ValidateNotNullOrEmpty()] [System.String[]] ${Name}, [Parameter(ParameterSetName='Id', Mandatory=$true, ValueFromPipelineByPropertyName=$true)] [Alias('PID')] [System.Int32[]] ${Id}, [Parameter(ValueFromPipelineByPropertyName=$true)] [Alias('Cn')] [ValidateNotNullOrEmpty()] [System.String[]] ${ComputerName}, [ValidateNotNull()] [Switch] ${Module}, [Switch] ${Continous}, [int32] ${Seconds}=0, [Alias('FV','FVI')] [ValidateNotNull()] [Switch] ${FileVersionInfo}, [Parameter(ParameterSetName='InputObject', Mandatory=$true, ValueFromPipeline=$true)] [System.Diagnostics.Process[]] ${InputObject}) begin { try { $outBuffer = $null if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { $PSBoundParameters['OutBuffer'] = 1 } $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Microsoft.PowerShell.Management\Get-Process', [System.Management.Automation.CommandTypes]::Cmdlet) 'Seconds','Continous' | foreach { $null=$PSBoundParameters.Remove($_) } $scriptCmd = {& $wrappedCmd @PSBoundParameters } $steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin) $steppablePipeline.Begin($PSCmdlet) } catch { throw } } process { if($Continous) { while($true) { Start-Sleep -Seconds $Seconds Get-Process @PSBoundParameters } } try { $steppablePipeline.Process($_) } catch { throw } } end { try { $steppablePipeline.End() } catch { throw } } }on peux l'utiliser ainsi:
PS> Watch-Process -Name n* -Continous -Seconds 2 PS> Watch-Process note* PS> Watch-Process -Name n* -Continous