Macadressenfilterung per Powershell
Hallo alle miteinander, weil ich bisher immer mit euren Ratschlägen gut klar gekommen bin, habe ich doch gleich mal ein Anliegen.
Und zwar habe ich folgendes vor.
Ich habe eine Excel Tabelle, wo die ganzen Macadressen drin stehen, die sich auf einem TS verbinden dürfen.
Falls diese nicht drin steht, soll er sich abmelden.
Mein code ist bisher folgender
Meine Excel Tabelle hingegen so (c:\Macadresse.csv)
Ich denke das die Formatierung bei der MACAdresse auslesen mit dem in der Excel Tabelle nicht übereinstimmt.
Folgendes Problem habe ich auch, wenn ich die Umgebungsvariable %clientname% nehme: Der RPC Server ist nicht verfügbar, wenn ich jedoch den Computername an sich nehme, stellt dies kein Problem dar.
Wo liegen meine Fehler?
Und zwar habe ich folgendes vor.
Ich habe eine Excel Tabelle, wo die ganzen Macadressen drin stehen, die sich auf einem TS verbinden dürfen.
Falls diese nicht drin steht, soll er sich abmelden.
Mein code ist bisher folgender
$Whitelist = import-csv "C:\Macadresse.csv" -Delimiter ";"
$macadresse =Get-WmiObject -Class win32_networkadapterconfiguration -ComputerName %clientname% |select macaddress
$überprüfung = "$whitelist" -match "$macadresse"
if ($überprüfung -eq $False)
{(Get-WmiObject -class Win32_OperatingSystem).Win32Shutdown(0) }
Meine Excel Tabelle hingegen so (c:\Macadresse.csv)
Ich denke das die Formatierung bei der MACAdresse auslesen mit dem in der Excel Tabelle nicht übereinstimmt.
Folgendes Problem habe ich auch, wenn ich die Umgebungsvariable %clientname% nehme: Der RPC Server ist nicht verfügbar, wenn ich jedoch den Computername an sich nehme, stellt dies kein Problem dar.
Wo liegen meine Fehler?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 277629
Url: https://administrator.de/contentid/277629
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
11 Kommentare
Neuester Kommentar
Moin,
erstens muss sichergestellt sein das die Rechner via WMI ferngewartet werden dürfen, d.h die Firewall der Clients muss dies erlauben.
Zweitens: Umgebungsvariablen solltest du in Powershell so ansprechen
Drittens sollte deine Csv keinen Header haben musst du ihn mit übergeben.
Gruß grexit
erstens muss sichergestellt sein das die Rechner via WMI ferngewartet werden dürfen, d.h die Firewall der Clients muss dies erlauben.
Zweitens: Umgebungsvariablen solltest du in Powershell so ansprechen
$env:ClientName
Drittens sollte deine Csv keinen Header haben musst du ihn mit übergeben.
$Whitelist = import-csv "C:\Macadresse.csv" -Delimiter ";" -header mac
$macs = Get-WmiObject -Class win32_networkadapterconfiguration -ComputerName $env:Clientname | select macaddress
$überprüfung = $macs | ?{$_.MacAddress -in $whitelist.mac}
if (!$überprüfung) {
(Get-WmiObject -class Win32_OperatingSystem).Win32Shutdown(0)
}
Hi,
schau mal die URL hier:
http://www.itmz.uni-rostock.de/software/windows/sicherheit/absicherung- ...
Gruß
Holli
schau mal die URL hier:
http://www.itmz.uni-rostock.de/software/windows/sicherheit/absicherung- ...
Gruß
Holli
bei dem Rest komme ich überall noch mit, aber kannst du mir erklären was er da macht?
In diesem Abschnitt wird jede MAC die die Abfrage auf dem Client ergeben hat (und ja , das können mehrere sein!) mit der Whitelist abgeglichen, dabei wird der Operator -in verwendet der ab PS 3.0 verfügbar ist und der einen Wert mit einem Array aus Werten vergleicht - gibt es eine Übereinstimmung übergibt das where-object (?{}) die MAC-Adresse und die Variable $Überprüfung ist nicht mehr leer, ansonsten ist sie leer und die negierte If-Abfrage wird abgearbeitet.
Du sagst hier ja noch nicht mal was über deine Umgebung wie und wo du die Skripte verknüpfst, ob es Start oder Logon-Scripte sind etc. pp. OS usw. Da kann man leider nur die berühmte Glaskugel bemühen
Die Firewalls der Clients müssen WMI fernwartbar sein damit das funkionieren soll, und außerdem muss dann der Account unter dem per WMI auf den Client zugegriffen wird die entsprechenden Rechte dafür besitzen.
Und in der Remote-Session muss unter folgendem Registry-Schlüsseln und Unterschlüsseln der Clientname als Umgebungsvariable registriert worden sein:
-edit- was du auch unbedingt sicherstellen solltest ist das der Client unbedingt eine gesicherte Verbindung mit dem Server haben sollte, d.h. er muss erfolgreich in der Domäne registriert sein und der Computer darf nicht mit gecachten Offline-Credentials online sein. Er muss also ein gültiges Computer Access Token besitzen.
-Computername clientname
Das kann ja schon mal gar nicht gehen, oder hast du clientname durch einen existierenden Namen ersetzt ?Die Firewalls der Clients müssen WMI fernwartbar sein damit das funkionieren soll, und außerdem muss dann der Account unter dem per WMI auf den Client zugegriffen wird die entsprechenden Rechte dafür besitzen.
Und in der Remote-Session muss unter folgendem Registry-Schlüsseln und Unterschlüsseln der Clientname als Umgebungsvariable registriert worden sein:
HKEY_CURRENT_USER\Volatile Environment\
-edit- was du auch unbedingt sicherstellen solltest ist das der Client unbedingt eine gesicherte Verbindung mit dem Server haben sollte, d.h. er muss erfolgreich in der Domäne registriert sein und der Computer darf nicht mit gecachten Offline-Credentials online sein. Er muss also ein gültiges Computer Access Token besitzen.