Jump to content
xrated2

WPP und Powershell Scripts

Recommended Posts

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

Share this post


Link to post
Share on other sites
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. :)

Share this post


Link to post
Share on other sites

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
            
        }

 

Edited by xrated2

Share this post


Link to post
Share on other sites

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

Edited by testperson
  • Like 1

Share this post


Link to post
Share on other sites
vor 16 Minuten schrieb testperson:

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.

<Handwerkermodus>geht doch</Handwerkermodus>

Share this post


Link to post
Share on other sites

@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.

 

Edited by xrated2

Share this post


Link to post
Share on other sites
  • 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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

@testuser

Man kann ja tatsächlich im Scheduler ein Event vom Ereignisprotokoll definieren z.B. wenn Rasclient einen Disconnect macht, dass ist ja noch viel besser :-)

Danke für den Hinweis.

Share this post


Link to post
Share on other sites

Überlesen oder noch nicht so weit gedacht.

 

Ich habe jetzt folgende Trigger in einem Task

 

 

 

Nachteil allerdings wie schon bemerkt, das es jedes mal beim User flackert was ich jetzt mal mit VBS (geht wohl nicht anders) umgangen habe.

trigger.png

Edited by xrated2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...