Question Impossible d’appeler une méthode dans une expressi

Plus d'informations
il y a 7 ans 1 semaine #23459 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.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 1 semaine #23460 par Laurent Dardenne
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 ;)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 1 semaine #23461 par hays
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

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.071 secondes
Propulsé par Kunena