Dienstag, 5. Juni 2018

SMART Notebook Proxyfenster beseitigen

Die digitalen White-Boards unserer Schule verwenden die Software SMART Notebook. Die Software öffnet nach dem Starten jedoch ein Login-Fenster für die Proxy-Einstellungen. Dieses Fenster muss dann vor jeder Benutzung der digitalen Tafel 3 mal weggeklickt werden. Um diesen Umstand zu ändern muss man eine Außnahmeregelung mi Proxyserver für den jeweiligen PC anlegen.

Vorgehen:


Öffnen Sie Putty, verbinden sich zum Server (10.1.0.1) und melden sich als root an. Navigieren Sie in das Verzeichnis /etc/squid3
cd /etc/squid3/
und machen Sie eine Backup-Kopie der Datei local.conf
cp local.conf local.conf.bak
Nun editieren Sie die Datei local.conf mit einem Editor Ihrer Wahl, z.B. mc oder vi.
Dort fügen Sie pro Client oder IP-Range (Falls alle freizuschaltenden Cliengts in einem IP Bereich liegen) die Zugriffe ohne Proxy authentifizierung frei. 
acl SMART1 src 10.1.0.55/32
http_access allow SMART1
SMART1 ist ein Pseudonym für die Regel, es könnte auch ein anderer Name gewählt werden. Die IP-Adresse ist die des PCs auf dem die Smart-Software freigeschaltet werden soll. Die IP können Sie aus der Schulkonsole /Rechner(Schulen) entnehmen. Das /32 bedeutet, dass nur die Angegebene IP freigeschaltet wird. Falls sich mehrere freizuschaltende Rechner in einem IP-Bereich befinden kann auch ein ganzer Bereich freigeschaltet werden. Verwenden Sie z.B. die Subnet-Calculator.com um einen geeigneten Bereich zu bestimmen. 

Nach dem Speichern der Datei sollten Sei den Squid Service neu starten. 
service squid3 restart
Die freigeschalteten Rechner sollten nun keine Anmeldung mehr benötigen. 
Vorsicht: Eine INTERNETSPERRE kann an diesem PC nun NICHT MEHR aktiviert werden! Der Jugendschutzfilter ist davon jedoch nicht beeinflusst. 

Beispiele:


Das Freischalten mehrer PCs kann z.B. so aussehen. 
acl SMART1 src 10.1.0.55/32
acl SMART2 src 10.1.0.68/32
acl SMART3 src 10.1.0.53/32
acl SMART4 src 10.1.0.99/32
http_access allow SMART1
http_access allow SMART2
http_access allow SMART3
http_access allow SMART4
Wenn die freizuschaltenden PCs die IP-Adressen 10.1.0.201 bis  10.1.0.206 sind kann der Eintrag auch wie folgt aussehen, siehe Subnet-Calculator.com:
acl SMART src 10.1.0.201/29
http_access allow SMART

Druckerinstallation OHNE Probleme ABER OHNE Schulkonsolensteuerung

Vorwort:


Die Verteilung von Druckern über die Schulkonsole bietet einige Vorteile, wie die zentrale Moderation von Druckern, Druckerwarteschlange usw. Die Installation über den SERVER bringt aber auch viele Probleme mit sich, Treiber, welche sich nicht hochladen/installieren lassen. Warnungen wie „Vertrauen Sie diesem Drucker“, deren Beseitigung ich hier beschreibe, usw.

Eine Alternative dazu kann daher sein, die AdminVM als Druckserver einzusetzen. Dies bietet gegenüber der Server-Verteilung ebenfalls Vorteile: Treiber werden ohne Fehler installiert und an Clients verteilt. Die Drucker können ins Druckerverzeichnis aufgeführt und von jedem Benutzer „hinzugebucht“ werden. Die Verteilung der Drucker kann z.B. über Gruppenrichtlinien gelöst werden.
VORSICHT: Einstellungen der Schulkonsole sind völlig unabhängig der hier gemachten Einstellungen, damit verlieren Sie die Kontrolle der Drucker über die Schulkonsole.

Nachtrag: Ich habe gerade einen Artikel bei Microsoft entdeckt, der relativ exakt die gleichen Schritte für den Windows Server 2012 beschreibt. Das hätte mir viel Zeit und Nerven erspart. Damit die Seite nicht nochmal verloren geht, hier der Link: Drucker auf Windows Server 2012.

Vorgehen: 


  1. AdminVM als Druckserver einrichten,
  2. Freigeben der Drucker über Gruppenrichtlinien,
  3. Setzten der Standarddrucker über Gruppenrichtlinien

1. AdminVM als Druckserver einrichten


Die Einrichtung läuft analog zum Administratorhandbuch Kapitel 6.5.
Laden Sie vorbereitend für Ihren Drucker die aktuellsten Treiber für Ihre Windows-Version herunter und entpacken Sie ihn, z.B. mit 7Zip.

Auf der AdminVM drücken Sie die Windows-Taste und öffnen Sie den „Ausführen“-Dialog. In dem sich neu öffnenden Fenster geben Sie „printmanagement.msc“ ein und drücken Sie anschließend auf „OK“. Es öffnet sich das Fenster „Druckerverwaltung“.


Dort ist bereits die ADMINVM (lokal) hinterlegt, da jeder Windows PC automatisch einen Druckerserver installiert hat. Wenn Sie von einem anderen Windows PC aus Arbeiten wollen können Sie printmanagement.msc auch von einem anderen Windows Client aus öffnen. Dazu geben Sie analog zum Handbuch für Administratoren Kapitel 6.5.1 den Namen des Druckerservers an, also ADMINVM oder 10.1.0.13 (Die IP-Adresse der AdminVM)

Klicken Sie in der Druckverwaltung auf ADMINVM und auf Drucker.

Mit einem Rechtsklick auf „Drucker“ können Sie „Drucker hinzufügen“ wählen.


Klicken Sie „Einen neuen TCP/IP- oder Webdienste-Drucker über IP Adresse oder Hostnamen hinzufügen“ und anschließend auf „Weiter“.


Stellen Sie den Gerätetyp auf TCP-IP-Gerät und Hostname oder IP-Adresse auf die Adresse des Druckers. Diese können Sie z.B. aus der Schulkonsole entnehmen. (Schulkonsole/Drucker/Druckername enthält die IP des Druckers)


Falls Sie einen völlig neuen Drucker anlegen wollen müssen Sie wie üblich diesem über die Schulkonsole über „Rechner (Schulen)“ → „Hinzufügen“ → „Gerät mit IP-Adresse“ dem Drucker eine IP-Adresse zuweisen.

Beim Anschlussname können Sie den Druckernamen des neuen Druckers eingeben. Mit einem Klick auf „Weiter“ wird der Drucker nun angesprochen und erkannt.


Im folgenden Fenster klicken Sie auf „Einen neuen Treiber installieren“ und auf „Weiter“.

Klicken Sie auf „Datenträger“, „Durchsuchen“ und wählen Sie den Ordner des Druckertreibers. Im Ordner müssen Sie die „inf-Datei“ finden und anklicken, diese befindet sich oft in einem Ordner mit einer Bezeichnung „x64“ oder „64bit“. Nach einem Klick auf „Weiter“ wird eine Liste von Druckern angezeigt, welche im Treiber vorhanden sind. Wählen Sie wenn möglich den Treiber Ihres Druckers aus. Oft ist jedoch auch nur ein „Universaltreiber“ vorhanden, dieser sollte ebenfalls funktionieren. Nach einem Klick auf weiter werden die Freigabeeinstellungen geöffnet.
Geben Sie bei „Druckername“ und „Freigabename“ jeweils den Namen ein, unter welchem der Drucker im Netzwerk geführt werden soll.

Nach zwei letzten Klicks auf „Weiter“ wird der Drucker installiert und erstellt.

OPTIONAL: Jetzt können Sie den Drucker im Verzeichnis auflichten lassen. VORSICHT: durch diese Einstellung kann JEDER Benutzer im Netzwerk den Drucker auswählen und darauf drucken, ohne dass dies eingeschränkt werden kann. Mit einem Rechtsklick auf den Drucker erscheint im Menü „In Verzeichnis auflisten“, nach dem aktivieren kann der Drucker in der ganzen Schule gefunden werden.


klicken Sie dazu z.B. in Word bei der Druckerauswahl auf „Druckerhinzufügen…“.


2. Freigeben der Drucker über Gruppenrichtlinien


Das Freigeben von Druckern über Gruppenrichtlinien ist von Microsoft gut vorbereitet, jedoch ist aufgrund der vom Server vorgegebenen Struktur vorerst kein setzen des Standarddruckers möglich.

Klicken Sie mit rechter Maustaste auf den Drucker und wählen Sie „Mit Gruppenrichtlinie bereitstellen…“


Bei der Wahl des Gruppenrichtlinienobjekts klicken Sie auf „Durchsuchen…“. Klicken Sie mit einem Doppelklick die Organisationseinheit „schule.paedml-linux.lokal“ an und anschließend auf „Neues Gruppenrichtlinienobjekt erstellen“.


Geben Sie dem neuen Gruppenlinienobjekt einen Namen, welcher die Zuordnung von Druckern zu einem Computerraum wiederspiegelt, z.B. „Drucker Raum 15“ oder „Drucker Lehrerzimmer“.

Falls bei einem weiteren Drucker für den gleichen Raum bereits ein Gruppenrichtlinienobjekt existiert erstellen Sie kein neues. Die vorhandenen Richtlinien werden nach einem Klick auf „schule.paedml-linux.lokal“ aufgelistet, wählen Sie dort die passende Richtlinie aus.


Aktivieren Sie nun die Checkbox „Die Computer, auf die…“ und klicken Sie auf „Hinzufügen“. Damit ist der Drucker per Gruppenrichtlinie freigegeben.


Diese Richtlinie gilt vorerst für alle Computer von „schule.paedml-linux.lokal“. Dies muss nun eingeschränkt werden. Klicken Sie auf die Windows-Taste und geben Sie „gpmc.msc“ ein. (Dies ist nur als Administrator möglich).

Öffnen Sie „Gesamtstruktur“ → „Domänen“ → „paedml-linux.lokal“ → „schule“ und suchen Sie dort Ihre neue Richtlinie.


In der Sicherheitsfilterung muss nun „Authentifizierte Benutzer“ entfernt werden. Wählen Sie dazu diese aus und klicken Sie auf „Entfernen“.


In der Sicherheitsfilterung müssen nun alle Benutzer und Computer hinzugefügt werden, auf welche Druckereinstellungen wirken sollen, die Computer des Computerraumes, und alle Schuler und Lehrer.
Klicken Sie auf in der Sicherheitsfilterung auf „Hinzufügen“. Im Fenster „Benutzer, Computer oder Gruppe auswählen“ geben Sie den Namen des Computerraumes mit dem präfix „schule-“ ein, z.B. „schule-raum15“. Nach einem Klick auf Namen überprüfen wird die Raumgruppe erkannt. Bestätigen Sie mit „OK“.


Fügen Sie auf gleiche Weise die Gruppen „schueler-schule“ und „lehrer-schule“ hinzu.


3. Setzten der Standarddrucker über Gruppenrichtlinien


Zum setzten der Standarddrucker muss die Gruppenrichtlinie bearbeitet werden.
Klicken Sie mit der rechten Maustaste auf das Gruppenlinienobjekt und wählen Sie „Bearbeiten…“


Es öffnet sich der Gruppenlinienverwaltungs-Editor. Öffnen Sie hier die Struktur „Benutzerkonfiguration“ → „Einstellungen → „Systemsteuerungseinstellungen“ → „Drucker“. Mit einem Rechtsklick in den weißen Bereich wählen Sie „Neu“ → „Freigegebene Drucker“.


Klicken Sie die Checkbox „Drucker als Standarddrucker festlegen…“ an und wählen danach auf dem Knopf „ … “ den Standarddrucker des Raumes. Klicken Sie bei der Druckersuche dazu auf „Jetzt suchen“, da der Drucker jetzt im Verzeichnis aufgelistet ist wird er unten angezeigt. Bestätigen Sie mit „OK“.
VORSICHT: Wenn der Drucker nicht im Verzeichnis aufgelistet wurde müssen Sie den Freigabepfad von Hand eingeben, z.B. \\ADMINVM\Drucker5. 
Vielen Dank an Herrn Unmüssig für den Hinweis. 

Das Setzen des Standard Druckers darf nur in diesem Computerraum angewendet werden. Klicken Sie dazu oben auf den Reiter „Gemeinsame Optionen“ und klicken Sie „Zielgruppenadressierung auf Elementebene“ an. Wählen Sie dann die „Zielgruppenadressierung“. Im Zielgruppenadressierungseditor klicken Sie auf „Neues Element“ und wählen „Sicherheitsgruppe“.


Jetzt wählen Sie auf dem Knopf „ … “ den Computerraum aus, z.B. „schule-Raum15“ und klicken auf „Namen überprüfen“. Bestätigen Sie mit „OK“.
Aktivieren Sie den Auswahlknopf „Computer in der Gruppe“. Klicken Sie auf „OK“.


Damit sind die Drucker von einem Windows PC freigegeben, dem Computerraum werden zugeordnete Drucker zugeteilt und der Benutzer des Raumes bekommt einen Standarddrucker zugeordnet.

Montag, 4. Juni 2018

"Bitte deaktivieren Sie Ihren Adblocker!"

Ich wurde gerade informiert das beim Aufruf von einigen Webseiten aus der Schule ein "Bitte deaktivieren Sie Ihren Adblocker!" Fenster eingeblendet wird.

Die paedML Linux verwendet jedoch keine lokalen Adblocker weshalb das "deaktivieren" etwas schwer fällt. Im Whiltelisting der paedML "rumzumurksen" um "hoffentlich" diese Seiten sehen zu können ist ebenfalls nicht all zu leicht. Aber natürlich kann man auch Feuer mit Feuer bekämpfen. Die Installation von uBlock Origin, einem AdBlocker löst das Problem prompt. Wunderbar, jetzt muss ich gegen Adblocker Warunungen einen Adblocker installieren... Dies ist eigentlich nicht im Sinne des Erfinders, jedoch zur Zeit die einzig mir bekannte Möglichkeit diese Seiten aufrufbar zu halten. Wenn Sie weitere/bessere Möglichkeiten kennen entsprechende Seiten anzuzeigen, ohne deren Monetarisierung zu unterlaufen, würde ich mich über Feedback freuen.


Die Installation von uBlock Origins auf den Clients können Sie per Gruppenrichtlinie durchführen, wie in dieser Quelle beschrieben:

Erstellen oder öffnen Sie eine passende Gruppenrichtlinie.
Unter Benutzerkonfiguration --> Administrative Vorlagen --> Google Chrome --> Erweiterungen wählen Sie die Einstellung --> "Liste der Apps und Erweiterungen konfigurieren, deren Installation erzwungen wurde". Diese müssen Sie "Aktivieren" und unter "Anzeigen" die ID der Erweiterung und der Updateserver hinterlegen. Für uBlock Origin ist dies der Wert:
cjpalhdlnbpafiamejdnhcphjbkeiagm;https://clients2.google.com/service/update2/crx
Stellen Sie wie immer sicher, dass die Richtlinie von allen Computerkonten und Nutzern gelesen werden kann, z.B. mit "Authenticated Users" in welchem sowohl PC als auch Benutzerkonten liegen.

Montag, 7. Mai 2018

OpenVPN für IOS Remotezugriff auf Home-Verzeichnisse

Um auf die Homeshares aus dem Internet zugreifen zu können brauchen Sie einen funktionierenden OpenVPN Zugang. Die Anleitung dazu findet sich im Administratoren Handbuch in Kapitel 20. 

Wenn der Zugang funktioniert haben Sie bereits die zwei Dateien client.ovpn und ucs-root-ca.crt. Die erste Datei enthält die Adresse der Schule und die Konfiguration der Client Einstellungen, die zweite Datei ist das Stammzertifikat zur Authentifizierung des Servers.

OpenVPN Connect Vorbereitungen 

Um einen Zugriff für iOS Geräte herzustellen laden Sie bitte die kostenfreie App OpenVPN Connect herunter. Wenn Sie die client.ovpn und ucs-root-ca.crt über iTunes in den Ordner der App laden kann die Verbindung ohne weitere Arbeiten hergestellt werden.
Die App bietet auch die Möglichkeit die ovpn Datei über andere Quellen wie AirDrop oder eMail einzulesen, jedoch funktioniert dies nicht mit der Zertifikatsdatei.

Um über "einfachem" Wege die Zertifikatsdatei ebenfalls übertragen zu können kann das Zertifikat in die opvn Datei eingearbeitet werden. Die Anleitung dazu findet sich auch in der Hilfe der  OpenVPN Connect App.

Öffnen Sie die client.ovpn und ucs-root-ca.crt mit einem Texteditor.
Dort entfernt man die Zeile "ca ucs-root-ca.crt". Kopieren Sie den Inhalt der ucs-root-ca.crt und fügen Sie diesen am Ende der Datei client.ovpn ziwschen einem "ca" html Tag ein.

          client
          remote 123.4.56.78
          ca ucs-root-ca.crt <-- entfernen
          auth-user-pass
          cipher AES-128-CBC
          comp-lzo yes
          dev tun
          auth-nocache
          <ca>
          -----BEGIN CERTIFICATE-----
          223hE9DISTtt4Btvhp3ubjyApfbcvA3AhA4CsFZ5h3WX2XQgliUOcYBjr2ZyX6OS2
          bzpcT7iZ30WAZk6OBbaGtGbvyZNsvEQWWN2hgyeC9pbjYYoBL5UVIhzAn7pslN8
          xhpaPDCSvpDWpMTb5a6Kt4tGwvIidEJRWgOUagyaSoT2TeMsjg5ltnIF021VcPUUa
          2XkQVWjgJxBvneQ4V0ec2vLvhnb1DbdEtR93bfdbewkOuHHbNK85geSHsrKv8DSL
          P6J71bl00vqSTDOTnAji2RaE5aL5fkVe6dWrrzKnO8UGjThf09BXQTK4Uu2cpFz01S
          ----END CERTIFICATE----
          </ca>

Speichern Sie die Datei z.B. unter dem Namen ios.ovpn ab. Die Datei kann nun auf beliebigem Weg in die OpenVPN App übertragen und eingelesen werden und eine Verbindung hergestellt werden.

Schülerinnen und Schüler für OpenVPN Verbindung freischalten

Ein Lehrer kann sich mit diesen Einstellungen direkt Verbinden, Accounts von Schülerinnen und Schülern werden jedoch abgelehnt. Dazu muss dies in der Firewall eingestellt werden. 
Dazu auf der Firewall (10.1.0.11) per Browser anmelden. 
(Ich bitte um Entschuldigung dass meine Firewall auf deutsch umgestellt ist, ich gehe jedoch davon aus, dass sich die Schritte auch auf der englischen Variante gut übertragen lassen.)

Klicken Sie auf System --> Benutzerverwaltung --> Authentifizierungsserver

Klicken Sie auf  "+Hinzufügen". 
Tragen Sie jeweils ein (siehe auch: Bild unten):

  • Beschreibender Name: schuelerUndLehrer.paedml-linux.lokal
  • Hostnamen: server.paedml-linux.lokal
  • Transport: SSL - Encrypted
  • (Dadurch ändert sich der Port auf 636)
  • Suchumfang: Gesamte Unterstruktur
  • Base DN: DC=paedml-linux,DC=lokal
  • Authentifizierungscontainer: CN=users,OU=schule,DC=paedml-linux,DC=lokal
  • Klicken Sie auf Anonym binden um dies zu deaktivieren.
  • Bindungsanmeldedaten:
    • User DN: CN=ldapsuche,CN=Users,DC=paedml-linux,DC=lokal
    • Passwort: 
    • Das Passwort finden Sie auf dem Server in /etc/ldapsuche.secret
  • Benutzer-Namensattribut: samAccountName
  • Gruppen-Mitgliedsattribut: MemberOf
(Die Datei ist bis auf den Authentifizierungscontainer und dem Suchumfang identisch mit den Einstellungen aus "lehrer_server.paedml-linux.lokal".)

Klicken Sie nun auf Speichern.


Nun muss OpenVPN noch diese Benutzereinstellungen mitgeteilt bekommen. Klicken Sie auf
VPN --> OpenVPN. Wählen Sie bei "OpenVPN INTERNET (tun)" die Aktion "Server bearbeiten".
Wählen Sie bei "Backend für die Authentifizierung" den gerade erstellten Server "schuelerUndLehrer.paedml-linux.lokal" an und klicken Sie ganz unten auf Speichern.

Nun werden sowohl Schüler und Lehrer bei einer OpenVPN Verbindung authentifiziert.

IOS Zugriff auf Home-Verzeichnisse

Meine Schule hat mittlerweile zwei iPad Klassen mit 1:1 zuordnung. Die SuS brauchen den Zugriff auf Ihre Heimatverzeichnisse, auch von Zuhause. Um dies umzusetzen haben wir unsere OpenVPN Verbindung und die App FileExplorer eingesetzt.
Das Einrichten von OpenVPN für den iPad-Einsatz wird in einem zweiten Artikel beschrieben.

Einrichten von FileExplorer zur Verbindung der Home-Laufwerke

Zum Einsatz kommt die kostenfreie Variante von FileExplorer. Diese erlaubt die Verbindung zu EINEM Share (z.B. Schüler Home).  Hier eine kurze Anleitung zur Einrichtung. Voraussetzung: die Geräte müssen in einem WLAN mit Zugriff auf den Server (10.1.0.1) liegen. 
  •  App öffnen
  •  Oben links auf das "+" klicken
  •  Windows auswählen 
    • Anzeigename wählen, z.B. "Home" 
    • Host oder IP-Adresse 10.1.0.1 
    • Path Schüler- oder Lehrer-Login im paed Netz, z.B. max.muster 
    • Zugangsdaten: Schülerlogin und Schülerpw
  • Anschließend rechts oben Speichern
Nun kann in der App auf "Home" bzw. den Anzeigenamen geklickt werden um den Inhalt des Homeverzeichnisses zu sehen. 


Montag, 23. April 2018

Schülerordner Links erstellen

Über Freigaben --> Home-Verzeichnisse Schueler --> _klassen können Lehrer die Ordner der Schühler ihrer Klassen anklicken. Da diese jedoch Links auf Linuxbasis sind können diese nicht kopiert werden.

Um eine "Windows Kopie" des Ordners "_klassen" anzulegen habe ich ein kleines Powershell Skript geschrieben. Es erstellt die gleiche Ordnerstruktur des Ordners "_klassen", ändert jedoch die Links zu den Schülerverzeichnissen zu Windows Links. Der neue Ordner liegt laut Skript auf c:\klassen. Er könnte als Alternative mit zwei Unterstrichen als "__klassen" in den Ordner der Schülerverzeichnisse gelegt werden. Dann kann sich jeder Kollege die Links seiner Klasse auch herauskopieren. 


Hier das (einfache) Skript
$a = Get-ChildItem -Path '\\server\Home-Verzeichnisse Schueler\_klassen\'
foreach ($as in $a){
    $b = Get-ChildItem -Path ('\\server\Home-Verzeichnisse Schueler\_klassen\' + $as.Name)
    New-Item -ItemType directory -Path ("c:\klassen\"+$as.Name)
    foreach ($bs in $b){
        write-host $bs.Name
        $WshShell = New-Object -comObject WScript.Shell
        $Shortcut = $WshShell.CreateShortcut("c:\klassen\"+$as.Name+"\"+$bs.Name+".lnk")
        $Shortcut.TargetPath = ("\\server\Home-Verzeichnisse Schueler\"+$bs.Name)
        $Shortcut.Save()
    }
}
Das vorige Skript ließt den Ordner _klassen aus und erstellt eine Kopie mit Windows Links.
Es ist aber auch möglich alle Informationen direkt aus dem LDAP Verzeichnis zu lesen. Das Skript wird dadurch etwas Komplizierter, legt jedoch z.B. auch wirklich nur Klassen an, nicht auch von lehrern angelegte Gruppen.

$speicherpfad="c:\klassen\"
[ADSI]$domain = "LDAP://CN=klassen, CN=schueler,CN=groups,OU=schule, DC=paedml-linux,DC=lokal"
$klassen = $domain.Children.distinguishedName | ForEach-Object {[ADSI]"LDAP://$_"}
New-Item -force -ItemType directory -Path ($speicherpfad)
foreach($k in $klassen){
    New-Item -force -ItemType directory -Path ($speicherpfad + $k.Name.Replace("schule-", ""))
    $schueler = $k.Member | ForEach-Object {[ADSI]"LDAP://$_"}
    foreach($s in $schueler){
        if($s.memberOf[0].Contains("schueler")){
            $WshShell = New-Object -comObject WScript.Shell
            $Shortcut = $WshShell.CreateShortcut("o:\klassen\"+$k.Name.Replace("schule-", "")+"\"+$s.displayName+".lnk")
            $Shortcut.TargetPath = ("\\server\Home-Verzeichnisse Schueler\"+$s.Name)
            $Shortcut.Save()
        }
    }
}
Damit Dateien und Ordner, welche nicht(mehr) benötigt werden, entfernt werden, kann das Skript den jeweiligen Ordner Inhalt auslesen. Falls die Dateien keine Entsprechungen im LDAP finden können Sie gelöscht werden. Das Skript wird dadurch um einiges länger, der "klassen" Ordner ist dadurch aber immer aktuell und ein Abbild der LDAP Struktur, gelöschte Klassen oder Schüler-Links werden entfernt usw.
$speicherpfad="\\server\Home-Verzeichnisse Schueler\__klassen\"
Write-Host "Zielordner ist " $speicherpfad
$start = (Get-Date)
[ADSI]$domain = "LDAP://CN=klassen, CN=schueler,CN=groups,OU=schule, DC=paedml-linux,DC=lokal"
$klassen = $domain.Children.distinguishedName | ForEach-Object {[ADSI]"LDAP://$_"}
#Alle Dateien und Ordner im Speicherpfad bekommen das Attribut Entfernen=$true. Wenn der Ordner existieren muss wird es später wieder auf $false gesetzt.
$alteOrdner = Get-ChildItem -Path ($speicherpfad)
$alteOrdner | Add-Member -NotePropertyName Entfernen -NotePropertyValue $true
$maxi = $alteOrdner|measure
New-Item -force -ItemType directory -Path ($speicherpfad) | Out-Null
$zaehler=0
foreach($k in $klassen){
 
    #Fortschrittsanzeige, falls unerwünscht, mit # auskommentieren.
    $zaehler=$zaehler+1
    write-host ([math]::round(($zaehler/($klassen.Count)*100),0))"%"
 
    #Für jeden existierenden Ordner wird geprüft, ob es eine Klasse mit dem gleichen Namen gibt. Falls nicht bleibt das Attribut Entfernen auf $true.
    for ($i=0;$i -lt $maxi.Count; $i++){
        if($k.Name.Replace("schule-", "") -like $alteOrdner[$i] ){ 
            $alteOrdner[$i].Entfernen = $false 
        }
    }
    New-Item -force -ItemType directory -Path ($speicherpfad + $k.Name.Replace("schule-", "")) | Out-Null
 
    # $zwischenspeicher enthält alle Dateien des jeweiligen Klassenordners
    $zwischenspeicher = Get-ChildItem -Path ($speicherpfad + $k.Name.Replace("schule-", ""))
    # Für jede Datei wird das Attribut Entfernen auf $true gesetzt
    $zwischenspeicher  | Add-Member -NotePropertyName Entfernen -NotePropertyValue $true
 
    $schueler = $k.Member | ForEach-Object {[ADSI]"LDAP://$_"}
    foreach($s in $schueler){
        if($s.memberOf[0].Contains("schueler")){
            $WshShell = New-Object -comObject WScript.Shell
            $Shortcut = $WshShell.CreateShortcut($speicherpfad+$k.Name.Replace("schule-", "")+"\"+$s.displayName+".lnk")
            $Shortcut.TargetPath = ("\\server\Home-Verzeichnisse Schueler\"+$s.Name)
            $Shortcut.Save()
        }
        $max = $zwischenspeicher |measure
        #Falls die Datei durch LDAP bestätigt wurde wird Entfernen = $false
        for ($i=0;$i -lt $max.Count; $i++) {
                if($zwischenspeicher[$i].baseName -like $s.displayName){
                    $zwischenspeicher[$i].Entfernen = $false;
                }
        }
    }
    #Dateien mit Entfernen = $true löschen.
    #Links zu Schülerordnern, welche nichtmehr in der LDAP Gruppe der Klasse vorhanden sind.
    foreach($z in $zwischenspeicher){
        if($z.Entfernen){
            Remove-Item -Path ($z.FullName) -Recurse -force
        }
    }
}
#Ordner mit Entfernen=$true löschen.
foreach($o in $alteOrdner){
    if($o.Entfernen){
             Remove-Item -Path $o.FullName -Recurse -force
    }
}
#Leere Ordner löschen
Get-ChildItem -Path $speicherpfad -Recurse -Force | Where-Object { $_.PSIsContainer -and (Get-ChildItem -Path $_.FullName -Recurse -Force | Where-Object { !$_.PSIsContainer }) -eq $null } | Remove-Item -Force -Recurse
$Ende = (Get-Date)
write-host "Das Sript lief für" ([math]::round(($ende - $start).TotalSeconds,0))"Sekunden"

(Erinnerung aus dem Shutdown-Aktikel) Skript Zeit-gesteuert ausführen

Zum zeit-gesteuerten Ausführen öffnen Sie die AdminVM, drücken Sie die Windows-taste und geben Sie "Aufgabenplanung" ein.
Klicken Sie auf "Aufgabe erstellen..." und geben Sie der Aufgabe einen Namen, z.B. "Schulcomputer herunterfahren".
Wählen Sie den Reiter "Trigger" und klicken Sie auf "Neu" und legen Sie hier Ihren Zeiplan an.
Stellen Sie eine Startzeit ein, z.B. 8:00:00 und Täglich. Klicken Sie auf "Wiederholen jede: " und stellen Sie 30 Minuten für die Dauer von 12 Stunden ein.Klicken Sie nun auf OK.
Im Reiter "Aktionen" klicken Sie auf "Neu". Die Aktion "Programm starten" ist voreingestellt. Bei Programm Tragen Sie "Powershell.exe" ein. Bei Parametern Tragen Sie
-ExecutionPolicy Bypass h:\PFAD\meinSkript.ps
ein. Mit einem Klick auf OK sollte das Skript nun täglich alle 30 Minuten ausgeführt werden.
Quelle

Montag, 16. April 2018

Opsi Statusfenster ausschalten.

Standardmäßig erscheint nach jeder Benutzeranmeldung ein kleines Opsi Fenster. In manchen Fällen schließt sich dieses erst relativ spät. Außerdem hat dieses Fenster unangenehme Eigenschaften, z.B. wenn man die Bildschirmauflösung ändert.
Hier möchte ich beschreiben, wie man das Fenster ausblenden kann.

Standardtwert setzen

Als erstes muss der Standartwert für das Ausblenden gesetzt werden.
Nach den öffnen von "Opsi-Configed Local" klicken Sie auf Server-Konfiguration.


Klicken Sie dann auf "Host-Parameter" --> "opsiclientd". Dort klicken Sie auf den Schlüssel "opsiclientd.event.user_login.active" und setzen den Wert auf "false". Bestätigen Sie dies mit einem Klick auf das rote Häkchen. Nun ist der Wert für alle neuen Clients gesetzt und wirksam.
Klicken Sie auf den linken Knopf neben der Server-Konfiguration um zur normalen Übersicht (der Client-Konfiguration) zurück zu kommen.

Werte für vorhandene Clients setzen


Wenn Sie bereits Clients ausgerollt haben müssen Sie den Wert für diese nochmals von Hand setzen.
Markieren Sie die Clients. Auf der rechten Seite finden Sie neben den Reitern "Produktkonfiguration" und "Netboot-Produkte" auch den Reiter "Host-Parameter". Klicken Sie auf "Host-Parameter" --> "opsiclientd". Dort klicken Sie auf den Schlüssel "opsiclientd.event.user_login.active" und setzen den Wert auf "false". Bestätigen Sie dies mit einem Klick auf das rote Häkchen.
Nun muss der Opsi-Client neu aufgespiet werden. Klicken Sie auf Produktkonfiguration und setzen Sie "opsi-client-agent" auf "setup".
Nach einem Neustart und der darauf folgenden neuionstallation des Opsi Agenten ist die Änderung nun wirksam.