Jump to content

ibicis

Members
  • Gesamte Inhalte

    79
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von ibicis

  1. Ich hatte aus einem Suchtreffer im WWW heraus ebenfalls "Name -like..." benutzt, aber das Bsp. enthielt die geschweiften Klammern aus meinem obigen Bsp., das dürfte die Ursache gewesen sein. Tausend Dank für die schnelle Hilfe!
  2. Hallo, ich ermittle mit PS diverse Gruppen in einer OU und filtere nach einem String. Frage ich nach allen Elementen ohne zusätzlichen Filter, ist die Ausgabe erwartungsgemäß mit dem CN versehen: Get-ADObject -Filter { Name -Like "*" } -Searchbase "OU=1,OU=2,OU=3,DC=ad,DC=local" | Select Name Filtere ich jedoch die Ausgabe um den String "adobe", werden zwar alle Gruppen, die den String enthalten, korrekt gelistet, jedoch ist die Ausgabe mit den farbigen und fett markierten Zeichen versehen: @{Name=gruppe-adobe} Die Abfrage: $name="adobe" Get-ADObject -Filter { Name -Like "*" } -Searchbase "OU=1,OU=2,OU=3,DC=ad,DC=local" | Select Name | Select-String -Pattern $name Gibt es die Möglichkeit, die Ausgabe vorn um 7 sowie hinten um 1 Zeiche zu kürzen oder kann ich die Abfrage so stellen, dass die Ausgabe nur den CN "gruppe-adobe" enthält? Ich suchte fleißig im WWW und fand u.a. die Trim-Funktion, kann die Ausgabe aber nicht entsprechend verpacken, ohne einen Syntaxfehler zu bekommen. Danke vorab.
  3. Ich habe ein CMD, welches alle 3 Sek nach einem Prozess sucht und diesen bei einem Treffer beendet: @echo off :while TIMEOUT /T 3 TASKLIST /FI "IMAGENAME eq notepad.exe" IF ERRORLEVEL 0 ( TASKKILL /IM "notepad.exe" /F /T IF ERRORLEVEL 1 ( GOTO while ) ) :eof Wird der Prozess gefunden, wird er beendet und das Script wird ebenfalls terminiert - so soll es sein. Läuft der Prozess jedoch nicht, so wird die while-Schleife endlos weitergeführt. Ich möchte nun erreichen, dass das Script bei Nichttreffer nach 3 Mins beendet wird, was u.a. mit einem Counter erreicht werden kann. Diese Seite gibt verschiedenste Bsp., wie man das erreichen kann: https://stackoverflow.com/questions/2591758/batch-script-loop Nun meine Frage: Wo in der while-Schleife muss der Zähler eingefügt werden, um die zeitliche Terminierung zu realisieren? Ich probiere seit etlicher Zeit anhand der Bsp. der verlinkten Seite herum, ohne mich dem Ziel anzunähern. Ich möchte das Script ungern über ein zweites Script oder den Taskplaner starten, damit könnte ich jedoch mein Ziel erreichen. Vielen Dank für jede konstr. Hilfe.
  4. Hallo testperson, ja, es geht um ein Zertifikat für SSL. Welcher öff. Zertifikataussteller ist zu empfehlen? Danke.
  5. Hallo, ich habe 2 Server zur Verfügung, die beide produktiv sind - einen DC sowie einen Exchangeserver 2013, beide OS sind Server 2012 Standard. Da bei der CA-Installation auch IIS inklusive ASP installiert wird würde ich gerne wissen, ob es grundsätzlich funktioniert oder ob ich die CA besser auf dem DC installieren sollte. Leider habe ich keine Mgl., die CA auf einem separaten Server zu installieren. Danke vorab für jede konstruktive Hilfe. MfG ibicis
  6. Hallo, ich habe ein blödes Problem mit der DFS-Replikation und deren Nebenwirkungen. Zu einer Server 2012-Domäne (dc01) wurde ein weiterer DC Server 2008 R2 als DC (dc02) hinzugefügt. Das Domänen-Funktionslevel war zuvor bereits nur "Windows Server 2008 R2", es muss also bereits ein Server 2008 R2 mal ein DC gewesen sein. Nach Hinzufügen des weiteren DC fiel mir auf, dass der SYSVOL-Ordner nicht repliziert worden war. Weiterhin fehlten auf dem 2. DC die Freigaben SYSVOL und NETLOGON. Die Freigaben erstellte ich daraufhin manuell und verglich die Freigabe- und NTFS-Rechte mit denen von DC 1 und setzte diese dann. Die Replikation klappte erneut nicht, das DFSR-Log auf dc01 zeigte diesen Fehler an: Die Recover Steps führte ich auf dc01 durch und das komplette SYSVOL wird seitdem repliziert, neue Objekte (Dateien, GPOs), die im SYSVOL erstellt werden, werden sofort auf dc02 repliziert und umgekehrt funktioniert es auch. Neu erstellte GPOs können aber leider nicht verarbeitet werden, gpresult wirft diesen Fehler aus: Dabei ist es egal, ob ich das neue GPO direkt im Domänenstamm oder an einer OU erzeuge und verknüpfe. Dass anstelle des GPO-Namens nur die ID ermittelt werden kann weist wahrscheinlich darauf hin, dass der aktuelle User wahrscheinlich kein Recht hat, im NTFS auf die Elemente unterhalb des GPO-Odners zugreifen zu dürfen. Durch Sicherheitsfilterung hat nur die Gruppe "Home-LW" das Recht, das GPO lesen und anwenden zu dürfen, das Bild zeigt, dass das Recht auch eigentlich funktioniert. Es macht auch keinen Unterschied, ob das Objekt nun auf dc01 oder auf dc02 erstelle und repliziere, der Fehler beibt bestehen. dcdiag führt für beide DCs diesen Fehler auf, der aber passt, da ich das Problem gestern Nachmittag erst behob, alle anderen Checks sind ok: Seit gestern Nachmittag sind keine neuen Events für DFSR mehr aufgetreten. repadmin /syncall bzw. /showreps meint, dass alles erfolgreich sei. Ich bin mit meinem Latein gerade etwas am Ende und weiß nicht recht, wo ich da noch ansetzen kann bei der Fehlersuche. Ich bin kurz davor, den dc02 wieder zu deinstallieren. Was übersah ich evtl.? Danke vorab.
  7. Hallo MurdocX, vielen Dank, aber das interessiert mein Script leider überhaupt nicht. Das Setup wird aufgerufen, egal ob Java der aktuellen Version entspricht oder nicht. Ich dachte erst, es läge evtl. daran, dass ich es "als Administrator ausführe", aber auch unter meinem Account ausgeführt startet die Installation.
  8. Hallo MurdocX, danke für deine Tipps. Die Variable $java_setup habe ich nun entsprechend formatiert. Ich habe die Setupanweisung nun wie empfohlen direkt unter die Deinstallation gelegt, was aber leider dasselbe Verhalten auslöst (ich hatte es vor meinem Posting aber auch schon getan mit demselben Ergebnis). $java_setup = Start-Process -FilePath "\\fileserver\install\Java8u101\jre-8u101-windows-i586.exe" -ArgumentList /s if ($objJavaProgramList = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like 'Java*' -and $_.Version -ne '8.0.1010.13'}) { ForEach ($objJavaProgramItem in $objJavaProgramList) { $objJavaProgramItem.Uninstall() $java_setup } } else { exit } So richtig verstehe ich es aktuell gerade nicht. Ich habe mal die Install-Uninstall-Routinen in echos umgewandelt - PS verhält sich dann völlig korrekt und antwortet mit "Keine Installation notwendig.": $java_setup = echo "Ich installiere nun." if ($objJavaProgramList = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like 'Java*' -and $_.Version -ne '8.0.1010.13'}) { ForEach ($objJavaProgramItem in $objJavaProgramList) { $objJavaProgramItem.Uninstall() $java_setup } } else { echo "Keine Installation notwendig." } Führe ich aber die Routine wie geplant aus, wird Java immer wieder neu installiert, was man an 2 Prozessen erkennen kann, die dann laufen oder indem ich den /s-Schalter weglasse - dann kommt das Install-GUI. Ehrlich gesagt kann ich mir darauf überhaupt keinen Reim machen.
  9. Hallo nochmal, ich dachte, die if else-Bedingungen bekomme ich allein hin, aber leider wird das Setup immer ausgeführt, egal ob eine ältere oder die neueste Java-version drauf installiert ist. Mein bisheriges Script: $java_setup = (\\fileserver\install\Java8u101\jre-8u101-windows-i586.exe /s) if ($objJavaProgramList = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like 'Java*' -and $_.Version -ne '8.0.1010.13'}) { ForEach ($objJavaProgramItem in $objJavaProgramList) { $objJavaProgramItem.Uninstall() } { $java_setup } } else { exit } Was habe ich nicht verstanden bzw. was mache ich falsch, danke vorab?
  10. Hallo, danke an alle für die Tipps, danke an blub für die Erklärung - habe daher aus -lt -ne gemacht. Damit werden zwar auch höhere Versionen deinstalliert, was aber praktisch keine Bedeutung hat. Ein wenig - ich sage mal - "ungünstig", ist der Umstand, dass wieder einmal viele Wege nach Rom führen. Auf diese Weise so etwas wie eine Systematik für PS zu bekommen ist schwierig. Für mich ist PS leider nach wie vor wie ein Sportwagen mit 1000 PS, dem aber nur eine japanischsprachige Bedienungsanleitung beiliegt - ich kann das Teil im ersten Gang fahren, weil er bereits eingelegt ist. Alle anderen Gänge sind nur über ein Touch Panel schaltbar. War jetzt nicht die originellste Analogie, bringt aber auf den Punkt, worauf ich hinaus will.
  11. Hallo MurdocX, vielen Dank. Alle Codeschnipsel zu einem Script zusammengefügt scheinen genau das zu machen, was ich möchte. Der Operator -lt war mir gänzlich unbekannt, nun weiß ich, was er bewirkt. Die Uninstall-Routine entfernt zuverlässig die JAVA-Installation. Worin liegt der Vorteil, den Job an msiexec zu übergeben? Ich tat dies nur aus Unwissenheit über die ProgramItem.Uninstall-Funktion.
  12. Hallo blub, vielen Dank für deine Mühe, aber ich bekomme beim Ausführen einen Syntaxfehler, da ein ")" fehlt: Fehlende schließende ")" im Unterausdruck. At line:14 char:2 Streiche ich eines der zwei "(" in der Variable $Products und leite die Ausgabe in Write-Host um, bekomme ich keine Ausgabe. Irgendwie funktioniert die Anweisung nicht so wie gewünscht. Testweise installiert sind "Java 7 Update 5" und "Java 8 Update 92". Das Script sieht so aus: $myName = "Java" $myVersion = "8 Update 101" $Products = @(Get-WmiObject -Class Win32_Product | Where { $_.Name -like $myName -and $_.Version -notlike $myVersion }) Foreach ($Product in $Products){ $Product.IdentifyingNumber $Product.Version Write-Host $Products } Hast du evtl. eine Idee, wo das Problem liegen könnte? Danke vorab. P.S.: Kleines Update: Falls .Version in der Variable $Products "8 Update 101" erwartet, wird das Script so nicht funktionieren, denn als Version wird "8.0.1010.13" ausgegeben. Allerdings funktioniert das Script damit auch nicht wie erwartet. Ganz ohne Filter werden diese Werte für die aktuellste Java-Version ausgegeben: Win32_Product.IdentifyingNumber="{26A24AE4-039D-4CA4-87B4-2F32180101F0}",Name="Java 8 Update 101",Version="8.0.1010.13"
  13. Hallo, ich möchte Java deinstallieren, wenn die installierte Version von der Version "Java 8 Update 101" abweicht. Ermitteln kann ich die Version mit Powershell über eine WMI-Abfrage: Das Ergebnis lautet dann: Die Variablen $ausgabe1 und $ausgabe2 wählte ich nur, weil ich das Teilergebnis "Java" benötige, von dem aber dann das Teilergebnis "8 Update 101" abweichen muss, damit von der abweichenden Version die "IdentifyingNumber" als Uninstall String zu MsiExec übergeben werden kann, also "MsiExec.exe /qn /norestart /X $java_version". Ich hoffe, keinen Denkfehler begangen zu haben, denn wenn die Abfrage funktioniert, würde jede Java-Version <> "8 Update 101" deinstalliert werden und danach kann ich dann das Setup von "jre-8u101-windows-i586.exe" aufrufen. Leider weiß ich nicht, wie ich beide Ausgaben UND-verknüpfen kann. Alle meine Versuche liefen entweder auf Syntaxfehler hinaus bzw. es wurden mir Uninstall Strings aller anderen Software geliefert, was im Falle einer Deinstallation fatal wäre. Geht das irgendwie oder ist mein Vorhaben rein von meiner Logik her gar nicht realisierbar? Danke vorab für jede konstr. Hilfe.
  14. Warum erst jetzt, am 14.03. wäre diese Antwort passender gewesen? Ich zeige einen funktionierenden Weg auf, ohne mich mit Optionen für Exe-Dateien aufzuhalten, die offenbar nicht erwartungsgemäß funktionieren. Der User kann diesen Weg gehen, oder er lässt es. Ist doch ganz einfach.
  15. Ich habe hier bei mir eine "AcroRdrDC1501020060_en_US.exe" rumfliegen, an der ich ein bisschen probiert habe. Nach Ausführen der Exe entpackt sich das Setup nach %TEMP% in einen Ordner mit einem Zufallsnamen, der aus 4 Ziffern besteht. Darin liegen 2 Dateien, eine "config.bin" und eine "installer.bin". Die "installer.bin" kannst du mit 7Zip nach "installer" entpacken, dann werden diverse Dateien entpackt, unter denen auch eine "AcroRead.msi" ist. Diese kannst du mit folgendem Befehl ohne Dialog installieren (die restlichen Dateien müssen aber in demselben Verzeichnis liegen): Die Variable %TEMP% wird in dein persönliches Tempverzeichnis übersetzt, alternativ kannst du die entpackten Dateien auch an einen anderen Ort deiner Wahl kopieren und den Pfad entsprechend anpassen. Das MSI kannst du auch per GPO als Softwareinstallation ausrollen.
  16. Danke für eure Tipps, aber es geht auch einfacher. Ich hänge an obiges Script diesen Befehl an und alles wird gut: Warum einfach, wenn es auch kompliziert geht oder so? :D
  17. Mir ist das Thema Formatierung nun auch zu hoch, ich verstehe das System hinter der Abfrage gar nicht. Es bringt mir leider nichts, ein Bsp. abzuschreiben, beim nächsten Mal habe ich dieselbe Frage wieder. Nochmals danke, aber ich muss mich mit dem zufrieden geben, was ich aktuell betreibe. Immerhin habe ich auf diese Weise eine brauchbare Ausgabe, ich muss diese nur im Nachhinein manuell filtern.
  18. Danke erst einmal, aber das bringt mich nicht weiter. Dieser Befehl funktioniert und liefert eine Ausgabe: Frage ich aber folgendes ab, bekomme ich die Ausgabe "False". Was mache ich falsch?
  19. Hallo, ich ermittle mit einem Powershell-Script UUIDs, diese lasse ich dann als Datei mit dem Hostnamen als Dateinamen ausgeben. Die Syntax der PS1-Datei ist folgendermaßen: Das Ergebnis schaut analog diesem aus: Nun suche ich schon tagelang und recht erfolglos nach einer Möglichkeit, die Ausgabe der DeviceID auf den rot markierten Bereich einzugrenzen (habs versucht mit SubString, Trim, Replace etc.). Alle Versuche scheiterten und provozierten Fehler, die für mich schwer bis nicht nachvollziehbar sind. Ich muss dazu sagen, dass ich bzgl. PS noch Einiges zu lernen habe, die Optionenvielfalt ist beachtlich und macht die Bedienung für mich nicht gerade leichter. Gibt es da eine Mgl., das entsprechend meiner Intention umzusetzen? Vielen Dank vorab.
  20. Hallo, ich erstelle mit PS folgendermaßen scriptgesteuert eine AD-Gruppe und füge bestehende Gruppen hinzu: Rot markiert ist das Datum nebst Uhrzeit der Erstellung angegeben. In einem Script selbst kann ich mittels "get-date" das aktuelle Datum nebst Uhrzeit anzeigen lassen. Kann ich mittels Variable bzw. als Befehl am Ende des Description-Strings automatisch diese Werte erzeugen? Der Befehl "get-date" wird von PS nicht ausgeführt sondern einfach als String in die Beschreibung eingefügt. Kann ich PS irgendwie beibringen, "get-date" als Befehl auszuführen und das Ergebnis in die Beschreibung einzufügen? Wenn ja, wie formatiere ich diesen Befehl? Alle bisherigen Versuche waren erfolglos. Danke vorab.
  21. Fantastisch, das war es, danke! Man kann halt nicht alles finden...
  22. Hallo, in einer Domäne mit zwei 2008 R2-DCs und einem 2003 DC wird das SYSVOL auf einem der beiden 2008er und dem 2003er DC korrekt repliziert. Der betroffene DC, bei dem es nicht funktioniert, loggt seit einiger Zeit folgendes: ====================================================== Protokollname: File Replication Service Quelle: NtFrs Datum: 03.12.2014 11:04:29 Ereignis-ID: 13568 Aufgabenkategorie:Keine Ebene: Fehler Schlüsselwörter:Klassisch Benutzer: Nicht zutreffend Computer: dc1.domain.local Beschreibung: Der Dateireplikationsdienst hat ermittelt, dass sich der Replikatsatz "DOMAIN SYSTEM VOLUME (SYSVOL SHARE)" sich in JRNL_WRAP_ERROR befindet. Name des Replikatsatzes : "DOMAIN SYSTEM VOLUME (SYSVOL SHARE)" Replikatstammpfad : "c:\windows\sysvol\domain" Replikatstammvolume : "\\.\C:" Ein Replikatsatz stößt auf JRNL_WRAP_ERROR, wenn der Eintrag, von dem gelesen werden soll, nicht vom NTFS-USN-Journal gefunden wird. Mögliche Ursachen hierfür sind: [1] Volume "\\.\C:" wurde formatiert. [2] Das NTFS-USN-Journal auf Volume "\\.\C:" wurde gelöscht. [3] Das NTFS-USN-Journal auf Volume "\\.\C:" wurde abgeschnitten. Chkdsk kann das Journal abschneiden, falls es beschädigte Einträge am Ende des Journals vorfindet. [4] Der Dateireplikationsdienst wurde seit längerer Zeit auf diesem Computer nicht mehr ausgeführt. [5] Die Rate der Laufwerks-E/A-Aktivität auf "\\.\C:" war zu schnell für den Dateireplikationsdienst. Das Festlegen des Registrierungsparameters "Enable Journal Wrap Automatic Restore" auf 1 führt dazu, dass folgende Maßnahmen zum automatischen Beheben des Fehlerzustands vorgenommen werden. [1] Beim ersten Poll, der in 5 Minuten durchgeführt wird, wird dieser Computer vom Replikatsatz entfernt. Wenn Sie nicht 5 Minuten warten möchten, führen Sie "net stop ntfrs" aus, gefolgt von "net start ntfrs", um den Dateireplikationsdienst neu zu starten. [2] Beim auf die Löschung folgenden Poll wird der Computer erneut zum Replikatsatz hinzugefügt. Durch das erneute Hinzufügen wird eine vollständige Struktursynchronisierung für den Replikatsatz ausgelöst. WARNUNG: Während des Wiederherstellungsvorgangs sind Daten in der Replikatstruktur möglicherweise nicht verfügbar. Sie sollten den oben beschriebenen Registrierungsparameter auf 0 festlegen, um eine unerwartete Nichtverfügbarkeit von Daten durch die automatische Wiederherstellung zu verhindern, wenn dieser Fehlerzustand erneut auftritt. Führen Sie regedit aus, um diesen Registrierungsparameter zu ändern. Klicken Sie auf "Start", dann auf "Ausführen", und geben Sie dann "regedit" ein. Erweitern HKEY_LOCAL_MACHINE. Folgen Sie folgendem Pfad: "System\CurrentControlSet\Services\NtFrs\Parameters" Doppelklicken Sie auf den Namen des Wertes "Enable Journal Wrap Automatic Restore" und aktualisieren Sie den Wert. Ist der Name des Wertes nicht vorhanden, können Sie ihn mit dem Befehl "Neu" und dann "DWORD-Wert " im Menü "Bearbeiten" hinzufügen. Geben Sie den Wert genauso ein wie oben gezeigt. ====================================================== Die beschriebenen regedit-Settings "HKLM\System\CurrentControlSet\Services\NtFrs\Parameters" habe ich bereits erfolglos gesetzt (der Wert "Enable Journal Wrap Automatic Restore" war nicht vorhanden) und stieß auf ein gut dokumentiertes Tut zum Bearbeiten der adsi-Settings für einen nichtauth. SYSVOL-Restore auf dem betroffenen DC: http://kpytko.pl/2013/12/12/non-authoritative-sysvol-restore-dfs-r/ Nun zu meinem Problem. Die Navigation in adsiedit funktioniert nur bis zu Default Naming Context -> DC=domain,DC=local -> OU=Domain Controllers -> CN=Domain Controller name. Hier das Bsp.Bild aus dem Tut: Der Wert CN=DFSR-LocalSettings ist allerdings nicht zu finden, egal, auf welchem DC ich suche. Gibt es dafür eine logische Erklärung bzw. kann ich diesen Wert manuell erzeugen, ohne das Schema zu beeinträchtigen? Danke vorab für jede konstruktive Hilfe dazu.
  23. Ich habe eine eigene CA auf einem DC installiert und ein Computerzertifikat für Serverauth. erzeugt und exportiert (Bild unbenannt1). Das Ziel der Zert.Benutzung ist eine Clientauth. auf einer TS-Farm, die Anleitung zur Erzeugung des Zertifikates entnahm ich hier und befolgte sie wie beschrieben: http://www.mcseboard.de/index.php?app=forums&module=post&section=post&do=new_post&f=47 Nachdem ich auf allen Mitgliedern der Farm das Defaultzertifikat durch das durch mich erzeugte Zertifikat ersetzte und ein GPO zum Import des Zertifikates in die Vertrauenswürdigen Stammzert.Stellen durchführte (Anleitung: http://znil.net/index.php?title=Windows:Gruppenrichtlinen_-_Vertrauensw%C3%BCrdige_Zertifikate_/_Stammzertifikate_per_Gruppenrichtlinie_(GPO)_verteilen), bekommt jeder Client beim Anmelden die Fehlermeldung, dass die Zert.Stelle nicht vertrauenswürdig sei. Anbei Bilder über Details des Zertifikates und anderer Einstellungen. Im GPO werden 2 Zertifikate verteilt (Bild unbenannt3), weil das Zertifikat für die Terminalserverfarm oben beschriebene Fehlermeldung provoziert. Ich dachte, ich verteile das Stammzertifikat selbst auch mit, was aber keine Abhilfe brachte. Auf den Clients werden die beiden Zertifikate in den Speicher der vertrauenswürdigen Stamm-CAs importiert, dies habe ich überprüft. Was in jedem selbst erzeugten Zertifikat "Test-test" (Bild unbenannt2) auffällt ist der Fakt, dass das Zertifikat unterhalb der Zertifizierungsstelle "xxxxx-dc01-ca" angeordnet ist. Liegt der Fehler evtl. darin? Allerdings habe ich darauf beim Erzeugen des Zertifikates keinerlei Einfluss und momentan keine Ahnung, wo das Problem zu suchen ist. Vielen Dank für jede konstruktive Hilfe vorab.
  24. Vielen Dank für die Antwort. Die verlinkten Quellen werde ich mir zu Gemüte führen.
×
×
  • Neu erstellen...