1 votes

Connexion utilisateur script - Affichage d'informations supplémentaires sur le réseau

J'ai une GPO qui exécute un script PowerShell script à l'ouverture de session pour un utilisateur particulier.

GPO Localisation :

enter image description here

Ce script envoie un courriel à chaque fois que l'utilisateur se connecte au domaine. Ce courriel contient le nom de l'ordinateur sur lequel ce compte a été connecté ainsi qu'un horodatage.

$MailMessage.Body = "User: Tom Logged into " + $env:computername + " Date: " + (Get-Date).ToString('dd/MM/yyyy hh:mm:ss tt')

Ce que je cherche à ajouter à cet e-mail, c'est l'emplacement de l'ordinateur distant à partir duquel ce compte a été connecté, par exemple :

Courriel :

Utilisateur : Tom Connecté au poste de travail-1 Date : 01/01/2021 08:30:00am de remote-workstation-5

Existe-t-il une chaîne d'environnement qui indique cela ?

L'utilisation des journaux d'événements est peut-être la bonne procédure, mais je n'ai trouvé aucun événement qui montre cette information pour tous les ordinateurs du réseau. L'événement ID 4624 n'indique même pas le nom du poste de travail, mais seulement l'adresse IP, avec un grand nombre de journaux obsolètes. L'événement 4778 affiche l'utilisateur auquel on a accédé et l'ordinateur distant d'origine, mais uniquement les événements liés au serveur local et non au domaine.

0voto

Narzard Points 2818

Une autre méthode consiste à utiliser PSTermialServices : ( https://github.com/imseandavis/PSTerminalServices )

Exécuter la commande : Get-TSSession -ComputerName PC01 o Get-TSSession -ComputerName localhost

Vous obtiendrez les valeurs suivantes :

enter image description here

Cela vous permet de savoir, d'une part, sur quel ordinateur un utilisateur est connecté à distance et où il se trouve et, d'autre part, qui est connecté à distance à la machine locale et d'où il se trouve.

0voto

Conformément à la suggestion commentée, vous pouvez utiliser la fonction Get-NetTCPConnection pour afficher les propriétés de la connexion TCP, telles que l'adresse IP locale ou distante, le port local ou distant et l'état de la connexion.

Exemples PowerShell

Get-NetTCPConnection -LocalPort 3389 | Select CreationTime, RemoteAddress

Sortie

CreationTime          RemoteAddress
------------          -------------
5/12/2021 10:18:58 PM ::           
5/24/2021 7:40:33 AM  10.99.99.11   
5/12/2021 10:18:58 PM 0.0.0.0
Get-NetTCPConnection -LocalPort 3389 | Sort CreationTime -Descending | Select CreationTime, RemoteAddress -First 1

Sortie

CreationTime         RemoteAddress
------------         -------------
5/24/2021 7:40:33 AM 10.99.99.11

En outre, si vous utilisez des versions de Windows qui ne prennent pas en charge la fonction Get-NetTCPConnection vous pouvez utiliser la cmdlet Méthode IPGlobalProperties.GetActiveTcpConnections et quelques méthodes d'analyse pour obtenir l'adresse IP de la (des) connexion(s) Remote Desktop Protocol établie(s).

Exemples PowerShell

Remarque : Vous devrez probablement analyser le LocalEndPoint en séparant le point-virgule pour obtenir le port. Il sera facile de déterminer la logique exacte dont vous avez besoin ici.

@([System.Net.NetworkInformation.IPGlobalProperties]::GetIPGlobalProperties().GetActiveTcpConnections())

ou

@([System.Net.NetworkInformation.IPGlobalProperties]::GetIPGlobalProperties().GetActiveTcpConnections()) | % { $_.LocalEndPoint -Split(":") }

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X