Ich versuche ein Skript zu schreiben, um die IP-Adresse des Windows-Clients zu protokollieren, von dem aus der Benutzer Remotedesktop anmeldete, um sich beim Windows-Server anzumelden. Wie erfasse ich die IP-Adresse des Clients im Server?Wie bekomme ich die IP-Adresse des Remote Desktop Clients?
5
A
Antwort
5
Also, ignorieren Sie Proxy ...
- mit Umgebung var: CLIENT in Domäne Sie können es auf IP lösen zurück
ohne Domänencontroller:
- WMI Skript können Sie zu Ereignisprotokoll, Quelle: Sicherheit, suchen Sie nach Kategorie Anmelden/Abmelden, wo Benutzername = Umgebungsvariable USERNAME
1
Wenn Sie PowerShell oder eine .NET-Sprache verwenden, unterstützt die Stammversion des Cassia library dies - greifen Sie einfach den neuesten Build von der build server (Login als Gast und verwenden Sie die Artefakte-Link). Um die Remote-Adressen aller Sitzungen auf dem lokalen Server zu drucken, können Sie so etwas wie die folgenden verwenden:
ITerminalServicesManager manager = new TerminalServicesManager();
foreach (ITerminalServicesSession session in manager.GetLocalServer().GetSessions())
{
IPEndPoint ipEndPoint = session.RemoteEndPoint as IPEndPoint;
if (ipEndPoint != null)
{
Console.WriteLine(ipEndPoint.Address);
}
}
1
Wenn Sie verwenden möchten, „reine“ Powershell 2.0:
$Wtsapi32 = @'
using System;
using System.Text;
using System.Runtime.InteropServices;
namespace Wtsapi32 {
public enum WTS_INFO_CLASS
{
WTSInitialProgram,
WTSApplicationName,
WTSWorkingDirectory,
WTSOEMId,
WTSSessionId,
WTSUserName,
WTSWinStationName,
WTSDomainName,
WTSConnectState,
WTSClientBuildNumber,
WTSClientName,
WTSClientDirectory,
WTSClientProductId,
WTSClientHardwareId,
WTSClientAddress,
WTSClientDisplay,
WTSClientProtocolType
};
[StructLayout(LayoutKind.Sequential)]
public struct WTS_CLIENT_ADDRESS
{
public uint AddressFamily;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[] Address;
}
public class PS {
public const IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
public const int WTS_CURRENT_SESSION = -1;
[DllImport("wtsapi32.dll", EntryPoint="WTSQuerySessionInformation")]
public static extern bool WTSQuerySessionInformation(
System.IntPtr hServer,
int sessionId,
WTS_INFO_CLASS wtsInfoClass,
out System.IntPtr ppBuffer,
out uint pBytesReturned);
[DllImport("wtsapi32.dll", EntryPoint="WTSFreeMemory")]
public static extern void WTSFreeMemory(
IntPtr memory);
}
}
'@
Add-Type -TypeDefinition $Wtsapi32
Was mehrere Clients kam vom selben Proxy-Server? – Dewfy
Nehmen wir an, es gibt keinen Proxy ;-) – BlueGene
Aus Neugier, wie machst du dein Skript? – chaz