VPN: Netzlaufwerke per Skript mounten
Hier geht es darum den Usern im Homeoffice die entsprechenden Netzlaufwerke zu mounten, ein automatisches GPUPDATE zu starten, oder diverse Scripts autmatisch nach der VPN Einwahl auszuführen.
Um das zu bewerkstelligen nutzen wir eine Kombonation aus Scripts, GPO und Windows Tasks.
In der entsprechenden GPO wird zuerst unter Benutzer / Einstellungen / Systemsteuerungseinstellungen eine geplante Aufgabe min. Windows 7 erstellt.
Als Trigger für diese Aufgabe nutzen wir die Eregnisanzeige / Bei einem Ereignis. Dies bewirkt, dass unser Powershell Script ausgeführt wird, sobald eine Verbindung zu einem Netzwerk aufgebaut wird.
Als Aktion wird die Powershell gestartet. Die Argumente sind -WindowStyle hidden "%appdata%\loginVPN.ps1"
-WindowStyle hidden bewirkt dass das Powershell Fenster nur für eine kurze Sekunde sichtbar ist. %appdata%\loginVPN.ps1 ist der Pfad zu dem Script.
Nun widmen wir uns dem Powershell Script. Wir gehen davon aus das eure lokale Domäne MeineDom.local heisst und dass der IP Adressrange des VPN 10.0.2.0/24 ist. Für diejenigen die Ihre Laufwerke noch via Script einbinden gehen wir davon aus, dass das Script unter \\PFADzuEUREMSCRIPT\Loginscript.cmd liegt. Die jenigen die das über die GPO machen können die Zeile 6 löschen. Zeile 7 & 8 dienen dazu den Basepfad des Benutzers auszulesen und das Homelaufwerk auf H: zu mounten.
Zu guter letzt muss das Script noch beim Client auftauchen. Dazu nutzen wir ebenfalls die GPO. Benutzer/Einstellungen/Windows-Einstellungen/Dateien erstellen wir einen neuen Eintrag und wählen Quelle und Ziel aus.Anschließend kopierren wir unser Powershell Script nach \\MeineDom.local\NETLOGON\ und warten darauf, dass sich alle Clients die neue GPO ziehen.
Um das zu bewerkstelligen nutzen wir eine Kombonation aus Scripts, GPO und Windows Tasks.
In der entsprechenden GPO wird zuerst unter Benutzer / Einstellungen / Systemsteuerungseinstellungen eine geplante Aufgabe min. Windows 7 erstellt.
Als Trigger für diese Aufgabe nutzen wir die Eregnisanzeige / Bei einem Ereignis. Dies bewirkt, dass unser Powershell Script ausgeführt wird, sobald eine Verbindung zu einem Netzwerk aufgebaut wird.
Als Aktion wird die Powershell gestartet. Die Argumente sind -WindowStyle hidden "%appdata%\loginVPN.ps1"
-WindowStyle hidden bewirkt dass das Powershell Fenster nur für eine kurze Sekunde sichtbar ist. %appdata%\loginVPN.ps1 ist der Pfad zu dem Script.
Nun widmen wir uns dem Powershell Script. Wir gehen davon aus das eure lokale Domäne MeineDom.local heisst und dass der IP Adressrange des VPN 10.0.2.0/24 ist. Für diejenigen die Ihre Laufwerke noch via Script einbinden gehen wir davon aus, dass das Script unter \\PFADzuEUREMSCRIPT\Loginscript.cmd liegt. Die jenigen die das über die GPO machen können die Zeile 6 löschen. Zeile 7 & 8 dienen dazu den Basepfad des Benutzers auszulesen und das Homelaufwerk auf H: zu mounten.
if (Test-Connection MeineDom.local)
{
if (Get-NetIPAddress -AddressFamily IPv4 | Where-Object -FilterScript { $_.IPAddress -like "10.0.2.*"})
{
cmd.exe /c '\\PFADzuEUREMSCRIPT\Loginscript.cmd'
$Base = Get-ADUser -Identity (Get-ChildItem Env:\USERNAME).Value -Properties HomeDirectory
New-SMBMapping -Localpath 'h:' -Remotepath $Base.HomeDirectory
cmd.exe /c gpupdate
}
}
Zu guter letzt muss das Script noch beim Client auftauchen. Dazu nutzen wir ebenfalls die GPO. Benutzer/Einstellungen/Windows-Einstellungen/Dateien erstellen wir einen neuen Eintrag und wählen Quelle und Ziel aus.Anschließend kopierren wir unser Powershell Script nach \\MeineDom.local\NETLOGON\ und warten darauf, dass sich alle Clients die neue GPO ziehen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3378453519
Url: https://administrator.de/tutorial/vpn-netzlaufwerke-per-skript-mounten-3378453519.html
Ausgedruckt am: 21.12.2024 um 15:12 Uhr
9 Kommentare
Neuester Kommentar
Moin,
wieso so kompliziert? Nutz doch einfach das Laufwerksmapping via GPO. Die Laufwerke bleiben bei der richtigen Konfiguration auch ohne VPN verbunden und werden entsprechend dann verfügbar, wenn die VPN-Verbindung wieder aufgebaut wird. Ja, dafür muss der Client sich einmal im Netzwerk anmelden, aber dass muss er ja für das kopieren deines Scriptes nach %appdata% ja auch.
Außerdem weißt du nicht was der Anwender mit dem Skript anstellt, wenn es bei ihm unter %appdata% liegt und er es dort verändern kann.
Gruß
Doskias
wieso so kompliziert? Nutz doch einfach das Laufwerksmapping via GPO. Die Laufwerke bleiben bei der richtigen Konfiguration auch ohne VPN verbunden und werden entsprechend dann verfügbar, wenn die VPN-Verbindung wieder aufgebaut wird. Ja, dafür muss der Client sich einmal im Netzwerk anmelden, aber dass muss er ja für das kopieren deines Scriptes nach %appdata% ja auch.
Außerdem weißt du nicht was der Anwender mit dem Skript anstellt, wenn es bei ihm unter %appdata% liegt und er es dort verändern kann.
Gruß
Doskias
Ok, aber:
Ansonsten, Stichwort: Always ON VPN. Ja hat auch gewisse Nachteile.
Achso und:
Gruß
Doskias
Zitat von @GMOT82:
Moin, das stimmt schon. Das Basislaufwerk bekommst du so aber leider nicht gemountet. Und es gibt auch noch einige die Ihre Laufwerke per Script mappen.
Das ist dann aber ein "Anwenderproblem". Versteh mich nicht falsch: ja, es gibt sicher Leute die das machen, aber das wäre mir, salopp gesagt, als Administrator egal. Wenn ich eine Freigabe als H mappe, dann interessiert mich nicht was die anderen mit ihren "privaten" Skripten machen. H muss H sein, sonst funktionieren dahinterliegende Prozesse nicht,Moin, das stimmt schon. Das Basislaufwerk bekommst du so aber leider nicht gemountet. Und es gibt auch noch einige die Ihre Laufwerke per Script mappen.
Hier kannst du auch jegliches Script beim verbinden via VPN ansprechen und das GPUpdate wird sofort nach dem Verbinden ausgeführt. Eventuell würde es noch SInn machen die Gruppenmitgliedschaft zu aktualisieren.
Wenn es dir nur um das gpupdate geht, dann mach doch einfach ein gpupdate als Befehl, wenn eine aufgebaute VPN-Verbindung und in den Logs erkannt wird. Also geplanter Task mit Trigger "bestimmtes Ereignis im Log"Und was soll er denn mit dem Script anstellen können? Die lokalen und domänen Berechtigungen greifen ja noch weiterhin.
Klar, aber er kann da immer noch drin rumfummeln und ggf. etwa rauslöschen, was dann später zu Folgeproblemen kommt. Stichwort von dir: eigenes Mapping-Skript Ansonsten, Stichwort: Always ON VPN. Ja hat auch gewisse Nachteile.
Achso und:
-WindowsStyle hidden bewirkt dass das Powershell Fenster nur für eine kurze Sekunde sichtbar ist. %appdata%\loginVPN.ps1 ist der Pfad zu dem Script.
Nicht WindowsStyle, sondern WindowStyle. Das zusätzliche S führt zu ungewolltem verhalten Gruß
Doskias
Zitat von @GMOT82:
und genau dieses macht doch die Aufgabe und das Script
Die Zeile 1 prüft lediglich ob die Domäne erreichbar ist. Zeile 4 prüft ob du intern oder extern bist.
und genau dieses macht doch die Aufgabe und das Script
Die Zeile 1 prüft lediglich ob die Domäne erreichbar ist. Zeile 4 prüft ob du intern oder extern bist.
ja habe ich schon versanden, mich nur ungünstig ausgedrückt. Was ich meine: war, dass du anstelle des Skriptes auch einfach gleich sagen kannst, dass du ein Powershell-Befehl ausgeben willst.
Anstelle der Aktion das PS-Skript einzugeben, machst du als Aktion einfach:
powershell.exe und dann bei den argument -WindowsStyle hidden wie bisher aber dann zum Beispiel noch zusätzlich -command "New-SMBMapping -Localpath 'h:' -Remotepath $Base.HomeDirectory".
Die Prüfung ob intern oder extern sehe ich als unnötig an, wenn die VPN aufgebaut.
Aber wenn du es willst, dann geht auch -command"[Dein ganzes Skript]". Damit sparst du dir das kopieren.
also:
powershell.exe -windowstyle hidden -command "New-SMBMapping -Localpath 'h:' -Remotepath $Base.HomeDirectory"
powershell.exe -windowstyle hidden -command "gpupdate /force"
Das beides als Aktion in der Aufgabenplanung und du hast, was du willst ohne ein Skript vom Server nach %appdata% verschieben zu müssen.
Gruß
Doskias
Wir gehen davon aus das eure lokale Domäne MeineDom.local
Schon wieder der immer wiederkehrende fatale Fehler!!!Die TLD .local ist ein NoGo!
Hinweise zur Verwendung der Domäne .local in DNS und mDNS
Zitat von @GMOT82:
In der Ereignisanzeige hast du aber kein Ereignis ob die VPN Verbindung aufgebaut wurde, sondern nur das eine Verbindung aufgebaut ist (ich hab zumindest nichts gefunden, nutzen OpenVPN als Client). Das bedeutet das ohne Prüfung ob Domäne und ob VPN oder Lokal, die Powershell Befehle bei jeder Verbindung (WLAN/LAN/anderes VPN) ausgeführt würde.
In der Ereignisanzeige hast du aber kein Ereignis ob die VPN Verbindung aufgebaut wurde, sondern nur das eine Verbindung aufgebaut ist (ich hab zumindest nichts gefunden, nutzen OpenVPN als Client). Das bedeutet das ohne Prüfung ob Domäne und ob VPN oder Lokal, die Powershell Befehle bei jeder Verbindung (WLAN/LAN/anderes VPN) ausgeführt würde.
Kenne OpenVPn nicht und weiß nicht wie und wo es loggt. Vielleicht nicht in einem Standard-Protokoll. Kaspersky-VPN-Verbindungen (nutzen wir nicht, aber nur als Beispiel), werden auch im Anwendungsprotokoll -> Kaspersky Event Log protokolliert, hab ich mir sagen lassen.
Unser Client (kurz geprüft) loggt es auch nicht sichtbar mit, aber in irgendeinem Windows-Protokoll wird bestimmt mitgeloggt wann ein Netzwerkadapter verbunden wurde. Und unser VPN Client nutzt hier einen virtuellen Netzwerkadapter. Da könnte man über eine benutzerdefinierte Ereignissuche im Eventlog bestimmt was basteln
Hallo,
mit was für einem VPN-Client wird die Verbindung aufgebaut? Wir nutzen den LanCom VPN-Client. Der LanCom VPN-Client bietet die Möglichkeit Skripte nach hergestellter Verbindung und Skripte nach abgebauter Verbindung laufen zu lassen.
Also bräuchte man nur ein "net use" Skript zu schreiben, das die Laufwerke mappt bei hergestellter Verbindung und ein "net use" Skript, dass die Laufwerke trennt, wenn die Verbindung abgebaut wurde.
Damit sind die Laufwerke immer dann da, wenn die Verbindung "established" ist.
Gruß
Tom
mit was für einem VPN-Client wird die Verbindung aufgebaut? Wir nutzen den LanCom VPN-Client. Der LanCom VPN-Client bietet die Möglichkeit Skripte nach hergestellter Verbindung und Skripte nach abgebauter Verbindung laufen zu lassen.
Also bräuchte man nur ein "net use" Skript zu schreiben, das die Laufwerke mappt bei hergestellter Verbindung und ein "net use" Skript, dass die Laufwerke trennt, wenn die Verbindung abgebaut wurde.
Damit sind die Laufwerke immer dann da, wenn die Verbindung "established" ist.
Gruß
Tom