Meilleur auteur de réponses
script pour trouver l'utilisateur d'un process / script à distance en erreur

Question
-
bonjour à tous,
j'ai créé un petit script pour récupérer le nom des utilisateurs d'un process.
En local, le script fonctionne sans erreur.
lorsque j'exécute ce script à distance pratiquement au même moment, j'ai cette erreur de manière aléatoire:$owners = @{}Get-WmiObject win32_process |% {$owners[$_.handle] = $_.getowner().user}
get-process | select processname,@{l="Owner";e={$owners[$_.id.tostring()]}} |WHERE {$_.processname -eq 'notepad'}
Exception lors de l'appel de « GetOwner » : « Non trouvé »
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WMIMethodExceptionj'appelle ce script à distance avec la commande ci dessous:
l'erreur n'empêche pas le script de fonctionner...$server="monserveur"
invoke-command -computername $server {c:\rep\listeUsers.ps1}
Réponses
-
- Marqué comme réponse jeepeez vendredi 24 juillet 2015 07:17
-
Voici le script fonctionnel.
Merci laurent, c'était la bonne piste: vérifier si la tâche est encore existante ou juste dans le cache.
voici le script fonctionnel:
$servers=@("serveur1","serveur2") foreach ($server in $servers) { invoke-command -computername $server { $computer = gc env:computername $procs = @() $allProcs = @(Get-WmiObject win32_process) write-host "--------------------------------------------------------" foreach($proc in $allProcs) { $procActive = get-process -Id $proc.processId -ErrorAction SilentlyContinue if($procActive) { if($proc.processname -like 'nomduprocess*') { "{0,-20} {1,-20} {2,8}" -f ` $proc.processname.ToUpper(),$proc.getowner().user.ToUpper(),$computer } } } } }
- Marqué comme réponse jeepeez vendredi 24 juillet 2015 07:23
Toutes les réponses
-
- Marqué comme réponse jeepeez vendredi 24 juillet 2015 07:17
-
-
Bonjour,
c'est normal d'avoir des erreurs, ton script doit être mis sur chaque serveur, ou bien tu dois le mettre dans
ScriptBlock de invoke-command!!
A+
L’information n’a de valeur que si elle est partagée!! AK |Mon Blog|
- Modifié Ahmed KASMI mardi 21 juillet 2015 18:38
-
-
Voici le script fonctionnel.
Merci laurent, c'était la bonne piste: vérifier si la tâche est encore existante ou juste dans le cache.
voici le script fonctionnel:
$servers=@("serveur1","serveur2") foreach ($server in $servers) { invoke-command -computername $server { $computer = gc env:computername $procs = @() $allProcs = @(Get-WmiObject win32_process) write-host "--------------------------------------------------------" foreach($proc in $allProcs) { $procActive = get-process -Id $proc.processId -ErrorAction SilentlyContinue if($procActive) { if($proc.processname -like 'nomduprocess*') { "{0,-20} {1,-20} {2,8}" -f ` $proc.processname.ToUpper(),$proc.getowner().user.ToUpper(),$computer } } } } }
- Marqué comme réponse jeepeez vendredi 24 juillet 2015 07:23