2017-04-20 1 views
1

J'ai un script qui appelle le bloc-notes sur un ordinateur distant avec psexec. Est-il possible d'obtenir l'ID de processus après son démarrage?Obtenir l'ID de processus après le démarrage de psexec

Voici ce que j'ai:

$PCname = "MyPC" 
$SessionID = "2" 
$Program = "Notepad.exe" 
$FilePath = "C:\temp\" 
$FileName = "Test.txt" 

set-alias psexec "C:\PsExec\psexec.exe" 
    &psexec -s -d -i $SessionID \\$PCname $Program $FilePath\$FileName 

Après l'exécution je reçois ce dans la fenêtre de sortie qui affiche l'ID du processus:

Connecting to MyPC...Starting PSEXESVC service on MyPC...Connecting 
with PsExec service on MyPC...Starting Notepad.exe on MyPC... 
Notepad.exe started on MyPC with process ID 8352. 

Comment puis-je récupérer l'ID du processus?

Répondre

2

Vous pouvez utiliser l'applet de commande Select-String pour saisir l'ID de processus en utilisant un regex:

&psexec -s -d -i $SessionID \\$PCname $Program $FilePath\$FileName | 
    Select-String 'process ID (\d+)' | 
    ForEach-Object {$_.Matches.Groups[1].Value} 
+0

Je suis un peu novice. Comment puis-je obtenir mon identifiant de processus? – Eric

+0

Il renvoie déjà le processus Id ;-) –

+0

??? Je suis perdu. Ne pas voir où il renvoie l'ID de processus – Eric

0
$a = (gps -ComputerName PcName| where{ $_.ProcessName -eq "Notepad.exe"} | select Id) 

$a.Id contient le

recherché Id
+0

Cela fonctionne bien si le seul Bloc-notes exécuté sur la machine est celui que j'ai démarré. – Eric