Question Recuperer la derniere connection RDP

Plus d'informations
il y a 15 ans 9 mois #6987 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é)...
:laugh:

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

Plus d'informations
il y a 15 ans 9 mois #6988 par Laurent Dardenne
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.

Plus d'informations
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

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

Plus d'informations
il y a 15 ans 9 mois #6990 par Laurent Dardenne
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.

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 9 mois #6996 par Gabriel
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 = \&quot;.\rapports\\&quot;

$fichierASupprimer = $repertoire + \&quot;*_noping.txt\&quot;
remove-item $fichierASupprimer -Force -Recurse

$import = \&quot;.\listeMachine_par-vi01.txt\&quot;

$listeVM = get-content $import

foreach ($VM in $listeVM) {
$VM
$cheminFichier = $repertoire + $VM + \&quot;.txt\&quot;
$cheminFichierEvenements = $repertoire + $VM + \&quot;_evenements.txt\&quot;
$cheminFichierNoPing = $repertoire + $VM + \&quot;_noping.txt\&quot;

# $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 \&quot;Security\&quot; | Where {$_.eventid -eq 528 -AND $_.Source -eq \&quot;Security\&quot;}
foreach ( $event in $events ) {
# on stock les evenements analysés dans un fichier
\&quot;
\&quot; | Out-File -FilePath $cheminFichierEvenements -Append
$event.TimeGenerated.DateTime | Out-File -FilePath $cheminFichierEvenements -Append
$event.UserName | Out-File -FilePath $cheminFichierEvenements -Append
\&quot;
\&quot; | 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 \&quot;Logon Type: 10\&quot;«»)){
$event.TimeGenerated.DateTime + \&quot;;\&quot; + $event.UserName + \&quot;;\&quot; + \&quot;LogonType 10 (RDP Login )\&quot;| 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 \&quot;Logon Type: 10\&quot; 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 :lol:

merci de l'aide

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

Plus d'informations
il y a 15 ans 9 mois #6997 par Laurent Dardenne
tonic8 écrit:

par contre c'est long... quand on a 200 machines à scannées

Avec la v2 tu peux utiliser des jobs, de plus l'usage répété de Out-file est pénalisant.
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
Propulsé par Kunena