Jump to content

WPP und Powershell Scripts


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi,
die Produktbezeichnung sagt ja alles... "für zu Hause"

Microsoft 365 Family (früher Office 365 Home)

https://www.microsoft.com/de-de/microsoft-365/compare-all-microsoft-365-products?market=de

 

Beim Audit kann man ja versuchen sich heraus zu reden,

dass es nicht eindeutiger eingeschränkt wurde .... ich sehe es so, dass es nur für den Privatgebrauch ist.

 

VG, Franz

Link zu diesem Kommentar
vor 10 Stunden schrieb xrated2:

Schlussendlich funktioniert es ja jetzt und das ist am wichtigsten. Aber wie lange ich dafür gebraucht habe, sage ich jetzt besser nicht.

Die genaue Lösung fehlt zum Abschluß noch.

 

Und Du wirst eh bezahlt, das sind als Ehda Kosten. Egal ob Du 8, 10 oder 12 Stunden am Tag an so etwas arbeitest, Du kostest am Monatsende nicht mehr. Solange Du alle sonst anfallende Arbeit in der Zeit erledigen kannst, juckt das den AG nicht. :)

Link zu diesem Kommentar

Na nicht ganz, da ich nach Std. bezahlt werde und von extern bin. Aber da ich mir vieles erst aneignen musste kann ich auch nicht alles berechnen.

 

Ich hab an den Tasks einfach so lange rumgeschraubt bis es ging. Zumindest hoffe ich das es jetzt auf allen PCs geht.

Interessant ist auch, wenn man powershell.exe aufruft das windowstyle nicht funktioniert, wohl aber wenn man den vollen Pfad zur exe angibt.

 

Oder das bei Datei kopieren, aktualisieren nicht heisst, dass der Inhalt der Datei überprüft wird und falls notwendig kopiert wird, sondern nur die File Attribute.

Bei einen Task musste ich nämlich die Datei auf lokal kopieren, denn das Script stellt die VPN Verbindung her, falls nötig.

 

Das hier (funktioniert nur bei VPN die über -Alluserconnection eingerichtet sind):

 

#vpn automatic connect
$vpnname = "name"
$lan = "192.168.3."

$vpn = Get-VpnConnection -Alluserconnection | where {$_.Name -eq $vpnname}
if ($vpn.ConnectionStatus -eq $null)
        {
            write-output "VPN Connection $vpnname doesnt exist!"
            Exit
        }

#$ipV4 = (Test-Connection -ComputerName (hostname) -Count 1  | Select -ExpandProperty IPV4Address).IPAddressToString
# above is not reliable because it will output the first interface which may be also ppp adapter
$ipv4 = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | where {$_.DefaultIPGateway -ne $null}).IPAddress | select-object -first 1


while ($true)
        {   
            $vpn = Get-VpnConnection -Alluserconnection | where {$_.Name -eq $vpnname}
            write-output $vpn.connectionstatus
            if ($vpn.ConnectionStatus -eq "Disconnected" -And $ipv4 -Notlike "*$lan*")
                {
                    #$processactive = Get-Process "rasphone" -ErrorAction SilentlyContinue
                    #if($processactive -eq $null)
                    #    {
                    #        $cmd = $env:WINDIR + "\System32\rasphone.exe"
                    #        $expression = "$cmd -d $vpnname"
                    #        Invoke-Expression -Command $expression 
                    #    }

                    #below probably only works with alluserconnection profiles
                    $cmd = $env:WINDIR + "\System32\rasdial.exe"
                    $expression = "$cmd $vpnname"
                    Invoke-Expression -Command $expression
                }
            
            start-sleep -seconds 60
            
        }

 

bearbeitet von xrated2
Link zu diesem Kommentar

Hi,

 

du möchtest dir eine Art "Always On VPN" nachbauen? Dafür wäre eigentlich DirectAccess (Scheidet aus wegen Windows Enterprise am Client?), Always On VPN (Scheidet aus wegen nur Windows 10 oder Verwaltung/Verteilung?) oder 3rd Party (Scheidet aus wegen Kosten?) bessere Alternativen.

 

Wenn das so mit dem Script per Task für dich passt und alles funktioniert, dann sollte das Script aber noch etwas optimiert werden.

  • Anstatt das Script "mittendrin" mit "Exit" zu verlassen, solltest du dir einmal if / elseif / else ansehen und bspw. den Rest in ein else-Statement packen.
  • Anstelle von *-WMIObject (ist AFAIK deprecated) solltest du *-CIMInstance nutzen
    • Wenn möglich würde ich beides vermeiden und bei der IPv4 Adresse auf "Get-NetIPAddress" zurückgreifen
  • Invoke-Expression würde ich durch "Start-Process" ersetzen
  • Eine Endlosschleife und "Start-Sleep" würde ich auch vermeiden. Anstelle dessen ggfs.
    • Einen Task, der bei Anmeldung den VPN Tunnel prüft und ggfs. aufbaut
    • Weiterer Task der auf ein "VPN Disconnect" Event triggered und VPN Aufbau startet
    • (Wenn beim Aufbau einer VPN Verbindung etwas passieren soll: Weiterer Task der auf "VPN Connect" Event triggered

 

Das wären zumindest meine groben Ansätze, die ich durchspielen würde.

 

BTW.: Da du als externer ja auch Geld kostest, wäre es evtl. zielführender in eine o.g. Supportete Lösung bzw. fertige Lösung zu investieren.

 

Gruß

Jan

bearbeitet von testperson
Link zu diesem Kommentar

@testperson

Get-NetIPAddress zeigt ja mehrere Interfaces, wie bekommt man da das richtige wenn Ethernet oder Wireless verwendet wird? Ich habe auch schon Rechner gesehen bei denen beides gleichzeitig aktiv war.

 

Warum keine Endlosschleife? Weil man die nur durch Neustart wegbekommt, wenn später was geändert wird?

Wenn man mehrere Tasks macht, müsste ich aber auch mehrere Dateien kopieren und ich wollte die Verarbeitungszeit der GPO nicht unnötig hoch treiben, vor allem weil es schon soviele sind.

Und wenn man das Script alle 60s mit Scheduler ausführt (um die Endlosschleife zu vermeiden), flackert ständig was beim User hoch. Ausser man trickst da wieder bei der Ausführung von powershell.exe rum.

 

Korrekt, kein Enterprise und daher scheidet auch Always On mit Gerätetunnel aus. An was dachtest du als 3rd Party Client der möglichst zuverlässig die Verbindung hält und mit dem man auch problemlos VOIP hinbekommt? Dazu kommt noch das der Server hinter einem NAT steckt und auch kein IKEv2 Mobility funktioniert damit die Verbindung bei Netzwerkproblemen gehalten wird, deswegen auch das Script.

 

bearbeitet von xrated2
Link zu diesem Kommentar
  • Wenn ich das richtig verstehe, brauchst du die IPv4 nur, um zu prüfen, ob du intern oder extern bist oder ist das VPN Netz 192.168.3.x/24?
    • $IPv4 = Get-NetIPAddress | where { $_.AddressFamily -eq "IPv4" -and $_.IPAddress -match "192.168.3."}
      # ...
      if(($vpn.ConnectionStatus -eq "Disconnected") -And (-not $ipv4))

       

  • Ich würde, wie gesagt, das Script nur dann starten, wenn ich es brauche. Hier solltest du mit den Events klar kommen bzw. mit "Bei Anmeldung"
  • In meinem Bereich setzen wir ausschließlich auf Citrix-Terminalserver und veröffentlichen diese über das Netscaler Gateway. Daher habe ich da keine produktiv genutzten Lösungen. Der Netscaler könnte das allerdings. Ansosnten empfiehlt Richard Hicks, der ganz fit in dem Bereich ist "Netmotion": https://directaccess.richardhicks.com/netmotion/

Ich habe das Gefühl, dass du dich ein wenig auf deine potentielle "Lösung" versteift hast, die für dich in Richtung "Always On VPN Alternative" geht. In einem Anderen Thread hast du das Problem, dass Scripts / verschiedene CSEs so nicht funktionieren. Die Frage wäre daher, was ist die Anforderung dahinter? Müssen die Scripts überhaupt laufen oder sollte man z.B. bei den Scripts ansetzen und ggfs. ablösen?

Link zu diesem Kommentar
vor 2 Stunden schrieb testperson:
  • Wenn ich das richtig verstehe, brauchst du die IPv4 nur, um zu prüfen, ob du intern oder extern bist oder ist das VPN Netz 192.168.3.x/24?
    • 
      $IPv4 = Get-NetIPAddress | where { $_.AddressFamily -eq "IPv4" -and $_.IPAddress -match "192.168.3."}
      # ...
      if(($vpn.ConnectionStatus -eq "Disconnected") -And (-not $ipv4))

       

  • Ich würde, wie gesagt, das Script nur dann starten, wenn ich es brauche. Hier solltest du mit den Events klar kommen bzw. mit "Bei Anmeldung"
  • In meinem Bereich setzen wir ausschließlich auf Citrix-Terminalserver und veröffentlichen diese über das Netscaler Gateway. Daher habe ich da keine produktiv genutzten Lösungen. Der Netscaler könnte das allerdings. Ansosnten empfiehlt Richard Hicks, der ganz fit in dem Bereich ist "Netmotion": https://directaccess.richardhicks.com/netmotion/

Ich habe das Gefühl, dass du dich ein wenig auf deine potentielle "Lösung" versteift hast, die für dich in Richtung "Always On VPN Alternative" geht. In einem Anderen Thread hast du das Problem, dass Scripts / verschiedene CSEs so nicht funktionieren. Die Frage wäre daher, was ist die Anforderung dahinter? Müssen die Scripts überhaupt laufen oder sollte man z.B. bei den Scripts ansetzen und ggfs. ablösen?

 

Genau, ob intern oder extern. Für VPN habe ich ein anderes Subnet, wo ich aber überlege das umzustellen, wegen Probleme mit Namensauflösung siehe:

 

Ich habe die Schleife im Script eben reingemacht, damit ständig überwacht wird ob der Client im VPN ist und falls nicht erfolgt automatisch der Connect. Und da kenne ich kein Event was dieses erkennt ausser eben ständig den Connectstatus vom VPN abzufragen.

 

Bei Scripts bin ich zum Glück bis jetzt nur mit dem bereits erwähnten für VPN ausgekommen und sonst brauche ich keine CSE welche synchrone Anmeldung erfordern.

Also eigentlich gehts im Moment nur um kleine Optimierungen und keine Show Stopper.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...