Jump to content

ibicis

Members
  • Gesamte Inhalte

    79
  • Registriert seit

  • Letzter Besuch

Profile Fields

  • Member Title
    Newbie

Fortschritt von ibicis

Fellow

Fellow (7/14)

  • Erste Antwort
  • Engagiert
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei

Neueste Abzeichen

10

Reputation in der Community

1

Beste Lösungen

  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.
×
×
  • Neu erstellen...