none
Intranet Einstellungen im Internet Explorer anpassen

    Frage

  • Guten Tag zusammen

     

    Ich habe folgende Sorgen: Ich habe ein Powershell Skript geschrieben (siehe unten) welches:

       - Die Startseite (des momentan angemeldeten Benutzers) definiert

       - Den Cache auf 50MB begrenzt

       - Einstellt, wie viele Tage die History behalten werden soll (20 Tage)

       - Die Intraneteinstellungen vornehmen soll

    Das Skript funktioniert soweit einwandfrei. Nur das mit den Intraneteinstellungen nicht ganz so wie es gedacht war. Wenn ich das Skript ausführe (IE nicht geöffnet) werden alle Einstellungen übernommen, bis auf die Intraneteinstellungen.

    ABER, habe ich nun den IE offen und führe das Skript aus, dann werden die Einstellungen übernommen. Ich habe dies versucht zu "rekonstruieren", das heisst im Skript habe ich den Internet-Explorer geöffnet, dei Einstellungen eingetragen und den IE wieder geschlossen. Der Effekt war, dass die Einstellungen wieder NICHT übernommen wurden.

    Ich habe das Skript auf meinem Host-System (Windows Vista) und in einer VMWare (Win XP) getestet, mit demselben Effekt. Der verwendete Internet Explorer ist V8.

    Skript:

    ########################################################################################################

    #Funktion zum in die Registry schreiben

    Function fnSetKeyValue([String]$strKey, [String]$strTyp, [String]$strValueToSet)
    {
        #REG_SZ                     =        String
        #REG_EXPAND_SZ        =        ExpandString
        #REG_DWORD              =        DWORD
        #REG_MULTI_SZ           =        MultiString
       
        #[System.Byte]$TestShit = $strValueToSet
       
        #Überflüssiges Backslash am Ende entfernen
        If(($strKey.SubString($strKey.Length - 1, 1)) -eq "\")
        {
            $strKey = $strKey.SubString(0, $strKey.Length - 1)
        }
        #Position des letzten '\' bestimmen
        [Int32]$intKeyLength = $strKey.Length
        For ($i = 1; $i -lt $intKeyLength; $i++)
        {
            If($strKey.SubString($strKey.Length - $i, 1) -eq "\")
            {
                [Int32]$intPosSlash = $strKey.Length - $i
                [Int32]$intLaengeSubKey = $i
                #$i auf Maximum setzen, damit aus der Schleife gesprungen wird
                $i = $strKey.Length
            }
        }

     

        #Schlüsselattribut auslesen
        [String]$strValueName = $strKey.SubString($intPosSlash + 1, $intLaengeSubKey - 1)


        #Schlüsselpfad auslesen
        [String]$strKey= $strKey.SubString(0, $intPosSlash)


        #Typ des neuen / geänderten Schlüssels definieren
        Switch ($strTyp)
        {
            "REG_SZ"         {
                                          Set-ItemProperty $strKey $strValueName -Value "$strValueToSet" -Type String
                                   }
            "REG_BINARY"     {
                                #Binary Values werden in einer Seperaten Funktion gesetzt
                             }
            "REG_EXPAND_SZ" {
                                Set-ItemProperty $strKey $strValueName -Value "$strValueToSet" -Type ExpandString
                            }
            "REG_DWORD"     {
                                Set-ItemProperty $strKey $strValueName -Value "$strValueToSet" -Type DWORD
                            }
            "REG_MULTI_SZ"     {
                                Set-ItemProperty $strKey $strValueName -Value "$strValueToSet" -Type MultiString
                            }
            Default            {
                                #Fehlernummer generieren und hier einfügen
                            }               
        }
    }

    #Beginn der Hauptroutine:

     

    #Startseite "Google":
    fnSetKeyValue "HKCU:\Software\Microsoft\Internet Explorer\Main\Start Page" REG_SZ "http://www.google.de"

    #Cache setzen (50MB):
    fnSetKeyValue "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\Cache\Content\CacheLimit" REG_DWORD 51200

    #"History x Tage aufbewahren (x = 20Tage):
    fnSetKeyValue "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\URL History\DaysToKeep" REG_DWORD 20

    #IntranetEinstellungen setzen:
    #IE als Objekt einlesen
    $appIE = New-Object -ComObject "InternetExplorer.Application"

    #Seite setzen, mit der der IE geöffnet werden soll

    $appIE.navigate2("http://www.google.de")

    #IE anzeigen
    $appIE.visible = $True

    #Registry Einträge schreiben
    fnSetKeyValue "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\AutoDetect" REG_DWORD 0
    fnSetKeyValue "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\IntranetName" REG_DWORD 1
    fnSetKeyValue "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\ProxyBypass" REG_DWORD 1
    fnSetKeyValue "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\UNCAsIntranet" REG_DWORD 1

    #2 Sekunden warten
    Start-Sleep -Milliseconds 2000

    #IE beenden
    $appIE.Quit()

    ###################################Skript Ende############################################################

     

    Vielen Dank für Eure Mithilfe schon jetzt

    Ronny

    Montag, 19. Juli 2010 11:26

Antworten

  • Ein Windows Server allein würde dabei allerdings nicht reichen. Es
    müsste schon ein Domain Controller der Windows Domain sein. Gibts bei
    Netware keine Möglichkeit das an Windows Clients zu verteilen?

    Die gibt es. Das heisst bei Novel Zenworks und dort kann man auch Gruppenrichtlinien verwenden.

     

    Viele Grüße

    Frank


    -- Frank Röder MVP Directory Services blog.iteach-online.de --
    Donnerstag, 22. Juli 2010 04:15

Alle Antworten

  • Hallo Ronny,

    es ist leider kein PowerShell Problem, auch beim direkten setzen der Reg Werte per regedit, ist das Verhalten nachvolziehbar.

    Meine Empfehlung wäre die IE Einstellungen per GPP/GPO zu verteilen.

    Gruß,
    Andrei

    Dienstag, 20. Juli 2010 09:39
    Moderator
  • Hallo Andrei,

     

    Das mit den Gruppenrichtlinien ist eine super Idee...leider können diese nicht verteilt werden, da keinen einzigen Windows Server im Haus haben (Wir setzen auf ein Linux/Netware Betriebssystem). Und für dieses kleine Problem einen Windows Server aufzusetzen wäre doch auch ein wenig übertrieben oder? :-)

    Daher müssen unsere Einstellungen per Login-Skript gesetzt werden. Was bisher auch einwandfrei funktioniert. Da wir mit dem LoginSkript einige Tools die auf dem Netzwerk liegen aufrufen. Da aber der Internet-Explorer standardmässig "falsch" eingestellt ist, erscheint beim Login eine Meldung, dass ein Programm vom Netzwerk gestartet wurde. (Bitte schreibt mir nicht dass ich die Benutzerkontensteuerung deaktivieren soll ;-) die soll aktiv bleiben, das hat eine höhere Gewalt so bestimmt)

    Daher wollte ich wissen ob es einen passenden Work-Around mit Powershell gibt oder ob jemand eine andere, skriptbasierte Lösung für mein Anliegen hat. Ansonsten muss ich mich wohl mit einem "Nein" abfinden.

    Gruss
    Ronny

    Dienstag, 20. Juli 2010 15:55
  • Am 20.07.2010 schrieb R00ney1988:

    Das mit den Gruppenrichtlinien ist eine super Idee...leider können diese nicht verteilt werden, da keinen einzigen Windows Server im Haus haben (Wir setzen auf ein Linux/Netware Betriebssystem). Und für dieses kleine Problem einen Windows Server aufzusetzen wäre doch auch ein wenig übertrieben oder? :-)

    Ein Windows Server allein würde dabei allerdings nicht reichen. Es
    müsste schon ein Domain Controller der Windows Domain sein. Gibts bei
    Netware keine Möglichkeit das an Windows Clients zu verteilen?

    Daher müssen unsere Einstellungen per Login-Skript gesetzt werden. Was bisher auch einwandfrei funktioniert. Da wir mit dem LoginSkript einige Tools die auf dem Netzwerk liegen aufrufen. Da aber der Internet-Explorer standardmässig "falsch" eingestellt ist, erscheint beim Login eine Meldung, dass ein Programm vom Netzwerk gestartet wurde. (Bitte schreibt mir nicht dass ich die Benutzerkontensteuerung deaktivieren soll ;-) die soll aktiv bleiben, das hat eine höhere Gewalt so bestimmt)

    Das müsste im Internet Explorer einzustellen sein. Könnt ihr die
    Einstellungen nicht per Computerstartupscript vornehmen? Zu diesem
    Zeitpunkt habt ihr alle Rechte zum ausführen des Scriptes. Nur auf das
    Share müssen natürlich auch die Computerkonten zugreifen dürfen.
    Versuch die Einstellungen doch mal auf einem Rechner mit GPEDIT.MSC
    innerhalb der Computerkonfiguration zu setzen. Wenn das geht,
    exportieren und auf den anderen Rechnern als Computerstartupscript
    importieren.

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Dienstag, 20. Juli 2010 17:23
  • Ein Windows Server allein würde dabei allerdings nicht reichen. Es
    müsste schon ein Domain Controller der Windows Domain sein. Gibts bei
    Netware keine Möglichkeit das an Windows Clients zu verteilen?

    Die gibt es. Das heisst bei Novel Zenworks und dort kann man auch Gruppenrichtlinien verwenden.

     

    Viele Grüße

    Frank


    -- Frank Röder MVP Directory Services blog.iteach-online.de --
    Donnerstag, 22. Juli 2010 04:15
  • Am 22.07.2010 schrieb Frank Roeder [MVP]:

    Ein Windows Server allein würde dabei allerdings nicht reichen. Es
    müsste schon ein Domain Controller der Windows Domain sein. Gibts bei
    Netware keine Möglichkeit das an Windows Clients zu verteilen?

    Die gibt es. Das heisst bei Novel Zenworks und dort kann man auch Gruppenrichtlinien verwenden.

    Danke,dann muß der OP das nur noch umsetzen. ;)

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Donnerstag, 22. Juli 2010 05:05