Question
Recuperer la derniere connection RDP
- Gabriel
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 15 ans 9 mois #6987
par Gabriel
Recuperer la derniere connection RDP a été créé par Gabriel
Bonjour a toutes et tous.
j'ai recuperer un code me permettant de recuperer l'ensemble des ouverture de session sur un PC dans l'event log Securité. J'essaie de le modifier pour recuperer la derniere ouverture via RDP. et c'est la ou je vois pas comment faire.
D'abord le code
[code:1]
$VM = nomDeLaMachine
$events = Get-EventLog -ComputerName $VM -LogName \"Security\" -newest 10000 | Where {$_.eventid -eq 528 -AND $_.Source -eq \"Security\"}
foreach ( $event in $events ) {
if (($event.message | Select-String \"Logon Type: 10\"«»)){
#\"LogonType 10 (RDP Login ) ;\"+ $event.TimeGenerated.DateTime + \";\" +$event.UserName
$aEnregistrer = $event.TimeGenerated.DateTime + \";\" + $VM + \";\" + $event.UserName
$aEnregistrer | Out-File -FilePath $journal -Append
}
[/code:1]
le probleme c'est que ma requete remonte toutes les ouvertures de session RDP dans les 10000 dernieres entrées
je cherche a remonter LA dernière entrée (et par exemple s'arreter de chercher quand il a trouvé)...
j'ai recuperer un code me permettant de recuperer l'ensemble des ouverture de session sur un PC dans l'event log Securité. J'essaie de le modifier pour recuperer la derniere ouverture via RDP. et c'est la ou je vois pas comment faire.
D'abord le code
[code:1]
$VM = nomDeLaMachine
$events = Get-EventLog -ComputerName $VM -LogName \"Security\" -newest 10000 | Where {$_.eventid -eq 528 -AND $_.Source -eq \"Security\"}
foreach ( $event in $events ) {
if (($event.message | Select-String \"Logon Type: 10\"«»)){
#\"LogonType 10 (RDP Login ) ;\"+ $event.TimeGenerated.DateTime + \";\" +$event.UserName
$aEnregistrer = $event.TimeGenerated.DateTime + \";\" + $VM + \";\" + $event.UserName
$aEnregistrer | Out-File -FilePath $journal -Append
}
[/code:1]
le probleme c'est que ma requete remonte toutes les ouvertures de session RDP dans les 10000 dernieres entrées
je cherche a remonter LA dernière entrée (et par exemple s'arreter de chercher quand il a trouvé)...
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 9 mois #6988
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Recuperer la derniere connection RDP
Il y a un post sur le blog de Janel qui aborde le sujet, mais si je me souviens bien sa solution à une limite en Ps v1.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 15 ans 9 mois #6989
par Gabriel

je supposes que tu parles de janel.spaces.live.com/ je vais regarder ce soir (au travail ils bloquents les blogs... :angry: )
Merci<br><br>Message édité par: tonic8, à: 27/05/10 17:51
Réponse de Gabriel sur le sujet Re:Recuperer la derniere connection RDP
je supposes que tu parles de janel.spaces.live.com/ je vais regarder ce soir (au travail ils bloquents les blogs... :angry: )
Merci<br><br>Message édité par: tonic8, à: 27/05/10 17:51
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 9 mois #6990
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Recuperer la derniere connection RDP
Oui, c'est cela, ce
post
plus précisément.
Une adaptation :
[code:1]get-eventlog system | where {$_.eventid -eq 6009} | foreach {$r=$_|ft timewritten,eventid; break}[/code:1]
Sinon la dernière instruction break clôt le pipeline avant l'affectation.
Une adaptation :
[code:1]get-eventlog system | where {$_.eventid -eq 6009} | foreach {$r=$_|ft timewritten,eventid; break}[/code:1]
Sinon la dernière instruction break clôt le pipeline avant l'affectation.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 15 ans 9 mois #6996
par Gabriel
Réponse de Gabriel sur le sujet Re:Recuperer la derniere connection RDP
ahh j'avais pas penser au break... du coup ca donne ca
[code:1]$datum = get-date -uformat %Y%m%d_%H%M%S
$repertoire = \".\rapports\\"
$fichierASupprimer = $repertoire + \"*_noping.txt\"
remove-item $fichierASupprimer -Force -Recurse
$import = \".\listeMachine_par-vi01.txt\"
$listeVM = get-content $import
foreach ($VM in $listeVM) {
$VM
$cheminFichier = $repertoire + $VM + \".txt\"
$cheminFichierEvenements = $repertoire + $VM + \"_evenements.txt\"
$cheminFichierNoPing = $repertoire + $VM + \"_noping.txt\"
# $cheminFichier
# $cheminFichierEvenements
# $cheminFichierNoPing
$Ping = test-connection $VM -quiet
if ( $Ping -eq $true) {
#if (!(test-path $cheminFichier)) {touch $cheminFichier}
# on supprime le fichier contenant les evenements de la derniere analyse
if (test-path $cheminFichierEvenements) {remove-item $cheminFichierEvenements -Force}
$events = Get-EventLog -ComputerName $VM -LogName \"Security\" | Where {$_.eventid -eq 528 -AND $_.Source -eq \"Security\"}
foreach ( $event in $events ) {
# on stock les evenements analysés dans un fichier
\"
\" | Out-File -FilePath $cheminFichierEvenements -Append
$event.TimeGenerated.DateTime | Out-File -FilePath $cheminFichierEvenements -Append
$event.UserName | Out-File -FilePath $cheminFichierEvenements -Append
\"
\" | Out-File -FilePath $cheminFichierEvenements -Append
$event.message | Out-File -FilePath $cheminFichierEvenements -Append
# si on tombe sur l'enevement qui va bien on le met dans un autre fichier
if (($event.message | Select-String \"Logon Type: 10\"«»)){
$event.TimeGenerated.DateTime + \";\" + $event.UserName + \";\" + \"LogonType 10 (RDP Login )\"| Out-File -FilePath $cheminFichier -Append
break
}
}
} ELSE
{ touch $cheminFichierNoPing
#break
}
}
[/code:1]
le script va scanner la base d'evenement Securité a la recherche du premier event ID 528 qui contient la string \"Logon Type: 10\" qui est une ouverture de session via RDP.
j'ai mis en place une log des evenements analysés (au cas ou) et de plus il y a un test pour voir si la machine ping ou pas.
par contre c'est long... quand on a 200 machines à scannées
merci de l'aide
[code:1]$datum = get-date -uformat %Y%m%d_%H%M%S
$repertoire = \".\rapports\\"
$fichierASupprimer = $repertoire + \"*_noping.txt\"
remove-item $fichierASupprimer -Force -Recurse
$import = \".\listeMachine_par-vi01.txt\"
$listeVM = get-content $import
foreach ($VM in $listeVM) {
$VM
$cheminFichier = $repertoire + $VM + \".txt\"
$cheminFichierEvenements = $repertoire + $VM + \"_evenements.txt\"
$cheminFichierNoPing = $repertoire + $VM + \"_noping.txt\"
# $cheminFichier
# $cheminFichierEvenements
# $cheminFichierNoPing
$Ping = test-connection $VM -quiet
if ( $Ping -eq $true) {
#if (!(test-path $cheminFichier)) {touch $cheminFichier}
# on supprime le fichier contenant les evenements de la derniere analyse
if (test-path $cheminFichierEvenements) {remove-item $cheminFichierEvenements -Force}
$events = Get-EventLog -ComputerName $VM -LogName \"Security\" | Where {$_.eventid -eq 528 -AND $_.Source -eq \"Security\"}
foreach ( $event in $events ) {
# on stock les evenements analysés dans un fichier
\"
\" | Out-File -FilePath $cheminFichierEvenements -Append
$event.TimeGenerated.DateTime | Out-File -FilePath $cheminFichierEvenements -Append
$event.UserName | Out-File -FilePath $cheminFichierEvenements -Append
\"
\" | Out-File -FilePath $cheminFichierEvenements -Append
$event.message | Out-File -FilePath $cheminFichierEvenements -Append
# si on tombe sur l'enevement qui va bien on le met dans un autre fichier
if (($event.message | Select-String \"Logon Type: 10\"«»)){
$event.TimeGenerated.DateTime + \";\" + $event.UserName + \";\" + \"LogonType 10 (RDP Login )\"| Out-File -FilePath $cheminFichier -Append
break
}
}
} ELSE
{ touch $cheminFichierNoPing
#break
}
}
[/code:1]
le script va scanner la base d'evenement Securité a la recherche du premier event ID 528 qui contient la string \"Logon Type: 10\" qui est une ouverture de session via RDP.
j'ai mis en place une log des evenements analysés (au cas ou) et de plus il y a un test pour voir si la machine ping ou pas.
par contre c'est long... quand on a 200 machines à scannées
merci de l'aide
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 9 mois #6997
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Recuperer la derniere connection RDP
tonic8 écrit:
Tu peux déjà effectuer un seul accés en utilisant par exemple une Here-String.
Je ne serais pas surpris si tu divisais la durée de ton traitement par 2 ou 3, surtout avec un script qui débute pas un appel à Test-Connection (appel WMI en interne si je me souviens bien), car le traitement passe une partie de son temps à attendre.
Autre approche, exécuter la recherche de l'eventlog et son formatage sur le distant et non plus en local via un accés remote. Le job se placera en veille pendant l'attente.
Il est également possible de placer la gestion du fichier de log dans un job dédié déclenché par un événement personnalisé, ainsi on délégue à seul job (thread) l'accès au fichier de log.
Avec la v2 tu peux utiliser des jobs, de plus l'usage répété de Out-file est pénalisant.par contre c'est long... quand on a 200 machines à scannées
Tu peux déjà effectuer un seul accés en utilisant par exemple une Here-String.
Je ne serais pas surpris si tu divisais la durée de ton traitement par 2 ou 3, surtout avec un script qui débute pas un appel à Test-Connection (appel WMI en interne si je me souviens bien), car le traitement passe une partie de son temps à attendre.
Autre approche, exécuter la recherche de l'eventlog et son formatage sur le distant et non plus en local via un accés remote. Le job se placera en veille pendant l'attente.
Il est également possible de placer la gestion du fichier de log dans un job dédié déclenché par un événement personnalisé, ainsi on délégue à seul job (thread) l'accès au fichier de log.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.048 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Recuperer la derniere connection RDP