Question
Impossible d’appeler une méthode dans une expressi
- hays
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 41
- Remerciements reçus 0
il y a 7 ans 1 semaine #23459
par hays
Impossible d’appeler une méthode dans une expressi a été créé par hays
Bonjour,
je pense que mon problème est certainement simple mais j'ai du mal à saisir la logique.
voici ce que j'essai de faire:
[code:1]
$wmicmdline = (Get-WmiObject Win32_Process).CommandLine
foreach ($item in $wmicmdline)
{
if ($item.Contains('notepad') -eq $true)
{
Write-Host $item
}
}[/code:1]
voici le message que cela me renvoi
[code:1]
Impossible d’appeler une méthode dans une expression Null.
Au caractère Ligne:5 : 8
+ if ($item.Contains('notepad') -eq $true)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Impossible d’appeler une méthode dans une expression Null.
Au caractère Ligne:5 : 8
+ if ($item.Contains('notepad') -eq $true)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Impossible d’appeler une méthode dans une expression Null.
Au caractère Ligne:5 : 8
+ if ($item.Contains('notepad') -eq $true)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
[/code:1]
c'est bizarre
j'ai pris notepad pour mes tests mais la vérité c'est que j'ai plusieurs processus du même nom dont certain que je dois killer. le seule moyen de les différencier est la ligne de commande car ils appellent certains paramètres.
Je pense être sur la bonne voie pour résoudre cette problématique mais je ne comprend pas trop ce qui ce passe.
je pense que mon problème est certainement simple mais j'ai du mal à saisir la logique.
voici ce que j'essai de faire:
[code:1]
$wmicmdline = (Get-WmiObject Win32_Process).CommandLine
foreach ($item in $wmicmdline)
{
if ($item.Contains('notepad') -eq $true)
{
Write-Host $item
}
}[/code:1]
voici le message que cela me renvoi
[code:1]
Impossible d’appeler une méthode dans une expression Null.
Au caractère Ligne:5 : 8
+ if ($item.Contains('notepad') -eq $true)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Impossible d’appeler une méthode dans une expression Null.
Au caractère Ligne:5 : 8
+ if ($item.Contains('notepad') -eq $true)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Impossible d’appeler une méthode dans une expression Null.
Au caractère Ligne:5 : 8
+ if ($item.Contains('notepad') -eq $true)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
[/code:1]
c'est bizarre
j'ai pris notepad pour mes tests mais la vérité c'est que j'ai plusieurs processus du même nom dont certain que je dois killer. le seule moyen de les différencier est la ligne de commande car ils appellent certains paramètres.
Je pense être sur la bonne voie pour résoudre cette problématique mais je ne comprend pas trop ce qui ce passe.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 7 ans 1 semaine #23460
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Impossible d’appeler une méthode dans une expressi
Salut,
tu supposes que tout les process ont une ligne de commande renseignée :
[code:1]
$Nocmdline = Get-WmiObject Win32_Process|Where {$null -eq $_.CommandLine}
$Nocmdline.name
#System Idle Process
#System
#audiodg.exe
[/code:1]
C'est faux
Avec une gestion d'erreurs et des tests, tu régleras le pb
tu supposes que tout les process ont une ligne de commande renseignée :
[code:1]
$Nocmdline = Get-WmiObject Win32_Process|Where {$null -eq $_.CommandLine}
$Nocmdline.name
#System Idle Process
#System
#audiodg.exe
[/code:1]
C'est faux
Avec une gestion d'erreurs et des tests, tu régleras le pb
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- hays
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 41
- Remerciements reçus 0
il y a 7 ans 1 semaine #23461
par hays
Réponse de hays sur le sujet Re:Impossible d’appeler une méthode dans une expressi
Bonjour Laurent vous avez raison c'est visible avec plusieurs notepad de lancer. En réalité pour moi il s'agit d'un processus développé chez nous en windev qui fait le café aussi j'ai l'impression
au final j'ai modifié hier en m'amusant un peu dessus
[code:1]
$ProcessNames = @('process_recherché.exe' )
$wmicmdline = Get-WmiObject Win32_Process -Computer 'localhost' |Where-Object { $ProcessNames -contains $_.Name -and $_.CommandLine -like \"*F028*\"}
foreach ($item in $wmicmdline3)
{
Stop-Process $item.ProcessId
#Write-Host $item.ProcessId
}
[/code:1]
ça a fonctionner comme je le veux même si je pense qu'il y a mieux à faire.
merci pour votre réponse
au final j'ai modifié hier en m'amusant un peu dessus
[code:1]
$ProcessNames = @('process_recherché.exe' )
$wmicmdline = Get-WmiObject Win32_Process -Computer 'localhost' |Where-Object { $ProcessNames -contains $_.Name -and $_.CommandLine -like \"*F028*\"}
foreach ($item in $wmicmdline3)
{
Stop-Process $item.ProcessId
#Write-Host $item.ProcessId
}
[/code:1]
ça a fonctionner comme je le veux même si je pense qu'il y a mieux à faire.
merci pour votre réponse
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.071 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Impossible d’appeler une méthode dans une expressi