-
Gesamte Inhalte
2.098 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von BOfH_666
-
-
vor einer Stunde schrieb daabm:
Klar funktioniert das, warum sollte es nicht? Einfach ( ) drum rum...
Stimmt. Und noch dazu isses häufig unnötig. Wenn's nur um die Ausgabe auf der Konsole geht, kann man die Strings auch einfach nur ausgeben.
-
vor 3 Minuten schrieb nutzer123456:
Es hat ja trotz des Fehlers die richtige Ausgabe erzeugt. Da scheint doch irgendein Autoformat zu greifen.
Powershell ist eher für Admins als für Software-Entwickler gemacht. Es werden gerne mal stillschweigend Fehler weggebügelt, um dem Admin trotz Fehlern ein verwertbares Ergebnis zu liefern.
-
vor 11 Minuten schrieb nutzer123456:
Woran liegt ds hier das Jahren, und Monate und nicht in "" stehen müssen?
Oooops ... eine kleine Nachlässigkeit beim Hin- und Her-Kopieren ... ich hab's korrigiert. ... und wenn Du es "schön ausgerichtet" ausgeben möchtest, kannst Du den Format-Operator "-f" verwenden und so die Ausgabe quasi Zeichen-genau formatieren.
-
vor 2 Stunden schrieb nutzer123456:
Schöner wäre aber :
Der Mitabeiter max, Mustermann ist bereits 1 Jahr, 2 Monate und 5 Tage beschäftitg.
Ich hab mal für Dich gesucht und etwas einigermaßen Passendes gefunden:
$start = Get-Date '1.4.2001' $span = [datetime]::Now - $start $dauer = New-Object DateTime -ArgumentList $span.Ticks Write-Host "Der Mitarbeiter ist seit $($dauer.Year - 1) Jahren, $($dauer.Month - 1) Monaten und $($dauer.Day) Tagen beschäftigt" #oder "Der Mitarbeiter ist seit {0,2} Jahren, {1,2} Monaten und {2,2} Tagen beschäftigt" -f $($dauer.Year - 1), $($dauer.Month - 1), $($dauer.Day)
Inspiriert hiervon: StackOverflow - Powershell - Getting a persons age.
Wenn Du noch ein oder zwei if - Bedingungen drumrum baust, bekommst Du auch noch die unschönen Null-Werte weg. ... sieht ja n' bissl doof aus, wenn da steht "Der Mitarbeiter ist seit 0 Jahren, 0 Monaten und 20 Tagen beschäftigt"
-
vor 1 Stunde schrieb daabm:
Manager ist ein Distinguished Name (DN).
.... nur der Vollstänigkeit halber ... mit dem cmdlet Set-ADUser kann man den Manager aber neben dem Distinguished Name auch als GUID (objectGUID), Security Identifier (objectSid) oder SAM account name (sAMAccountName) angeben, den Rest erledigt Powershell unter der Haube.
-
Vielleicht liest Du Dir nochmal die Hilfe für Set-ADUser durch ... komplett inklusive der Beispiele ... z.B. Das Beispiel #7
... und speziell die Hilfe für den Parameter -Manager. Da steht, was der Parameter als Wert braucht/akzeptiert.
Zum Testen solltest Du am besten ein Test-AD oder wenigstens Test-User benutzen ... nicht Deine Produktiv-Umgebung/User.
-
vor einer Stunde schrieb Sarina321:
Habt Ihr eine Ahnung wie ich das am besten mache?
So lange die Daten aus der CSV-Datei korrekt sind, sollte Dein Script funktionieren. Was genau ist denn die Frage?
EDIT:
Im Screenshot sehe ich keine Spalte für "sAMAccountName" ... kommt die noch weiter hinten?
-
Hmmm ... wenn das wirklich Dein kompletter Code ist, hast Du etwas Entscheidendes einfach weggelassen ... die Schleife ....
Du hattest oben geschrieben "Funzt einwandfrei .." - ich gehe mal davon aus, dass Du das nur an einem User getestet hast, oder?
Ich würde so anfangen:
$UserList = Get-ADUser -Filter * -SearchBase $(“OU=Benutzer,OU=ABC,OU=DEF,OU=\+1,dc=aa,dc=xyz,dc=de”) -Properties DisplayName foreach ($User in $UserList) { try { Set-ADUser -Identity $User.sAMAccountName -Displayname $user.displayname.replace("(Direktion Nord)", "(Direktion 32)") -ErrorAction Stop } catch { Write-Warning "Check User: '$($User.sAMAccountName)'" } }
-
1
-
-
Zeig doch mal bitte den kompletten Code.
-
Nicht paranoid zu sein, heißt ja noch lange nicht, dass sie nicht hinter einem her sind .....
... ob man in den eigenen, privaten vier Wänden sein Backup wirklich verschlüsseln muss, weiß ich nicht, Ich tue das tatsächlich nur mit der Cloud-Version meines Backups. Mein lokales Backup ist unverschlüsselt und unkomprimiert und ungezippt und so weiter. Früher habe ich rsyncbackup genutzt - heute isses Hardlinkbackup. Das hat für mich den Charm, dass ich für ein Restore keine extra Software benötige, ich - bei ausreichend Plattenplatz - quasi beliebig viele Versionen des Backups vorhalten kann und diese aber trotzdem nicht übermäßig viel Platz wegnehmen. Es wird eben nur bei geänderten Dateien eine neue Datei geschrieben - sonst wird nur ein Hardlink erzeugt, der so gut wie keinen Platz einnimmt.
vor 5 Stunden schrieb raketentier:Ich würde dir kurz schildern wie das bei mir läuft und hätte gerne genau so eine Lösung für einen Windows Pro Rechner.
Warum muss es denn "genau" so eine Lösung sein? Ich könnte mir vorstellen, dass, wenn Deine Schwiegereltern nicht genau so Computer-affin sind wie Du und Deine Frau, eine etwas simpler gestrickte Lösung auch immernoch den Zweck erfüllt.
vor 5 Stunden schrieb raketentier:Es steht ein kleiner schwarzer Würfel im Zimmer der als Home-Server dient. (Eigenbau mit Debian drauf.) Dort sind mehrere User angelegt.
Jetzt stecke ich eine USB HDD in den Würfel und dieser erkennt die Platte, ließt die Seriennummer aus und wenn diese mit der hinterlegten übereinstimmt, führt das System das Script "autp_backup.bash" aus.
Dann wird's also doch nicht "genau" so eine Lösung wie bei Dir? Oder hast Du uns jetzt den kleinen schwarzen Würfel für Deine Schwiegereltern unterschlagen?
vor 5 Stunden schrieb raketentier:Ich hoffe das sind genug infos. Bei bedarf kann ich auch mal das Script hier hoch laden. Ist aber für Linux und hat in einem Windows Forum eigentlich wenig zu suchen. :P
Ich denke schon. Da Windows inzwischen auch Linux und Bash kann, interessiert's ja vielleicht den ein oder anderen. Vielleicht reicht aber auch ein Github-Ghist-Link.
Das bläht den Thread nicht so auf.
vor 5 Stunden schrieb raketentier:Ob ich zur Wiederherstellung dabei sein muss/soll? Ich weiß es nicht. Je nach Schwierigkeitsgrad kann das auch meine Frau mit denen machen. Zusätzlich wird es auch eine Anleitung geben, sodass andere IT begeisterte aus Ihrem Umfeld denen helfen könnten oder meine S-Eltern es auch selber machen könnten. (Falls uns was passiert, u never know.)
Ich finde es grad nicht, aber ich weiß, dass es einen Backup-Server für Linux gibt, der die zu sichernden Dateien auch per SMB-Share von remote Computern einsammeln kann. Du gibst also einfach die zu sichernden Daten auf den Windows-PCs für den Backup-Account lesend frei und brauchst auf den Windows-PCs nix weiter machen. Den Rest erledigst Du von Linux aus - notfalls von einem Raspi. Sollte für Dich keine zu große Herausforderung darstellen.
Wegen der Verschlüsselung der Platten vom Windows-PC aus fällt mir noch VeraCrypt ein. Ja - ist auch wieder eine extra Software, aber wenigstens OpenSource.
Und noch einen Tipp zu den Laufwerksbuchstaben für USB-Plattten in Windows. Ich habe mir angewöhnt, für solche Platten, die ich für Backups oder wiederkehrende Aufgaben nutze, die ich automatisieren möchte, eben keine Laufwerksbuchstaben zu nutzen, sondern die Platten, wie unter ...x üblich in ein leeres Verzeichnis zu mounten. So vermeidet man die Frickelei mit wechselnden Laufwerksbuchstaben.
Ein Script für Windows, welches das gleiche tut, was Dein Script unter Linux tut, ist mir tatsächlich nicht bekannt. Ist vielleicht einfach ein zu spezielles Thema für Windows. Falls Du etwas Derartiges selbst entwickeln magst, würden wir Dir hier natürlich trotzdem gern helfen, wenn wir können.
-
vor 38 Minuten schrieb tesso:
Interessant.
Was ist der Grund dafür?
Ich schreibe das $null auch immer rechts.
Ich bin doch immer so schlecht im Erklären ....
PowerShell – Null comparison demystified
Powershell check variable for NULL
Checking for NULL in Powershell
... und wenn Du VSCode benutzt, weist Dich der dort im Hintergrund laufende PSScriptAnalyzer auch direkt darauf hin.
-
Supi.
Eine Kleinigkeit noch. Beim Vergleich mit $NULL sollte $NULL auf der linken Seite des Vergleichsoperators stehen. Also ...
if ($null -eq (Compare-Object -ReferenceObject $SourceACL -DifferenceObject $TargetACL -Property IdentityReference, FileSystemRights))
-
Du enthältst uns den entscheidenden teil Deines Scriptes vor. So können wir bestenfalls raten. Was steckt denn in $mb?
Poste doch mal bitte den kompletten relevanten Teil und dazu auch die komplette Fehlermeldung. Sehr häufiig enthält der Fehler schon einen Hinweis aus die Lösung.
-
vor 43 Minuten schrieb Karl-Heinz:
Funktioniert es vielleicht nicht, weil ich das positive und nicht das negative prüfe?
Ich vermute, dass Du ein Ergebnis erwartest, welches so nicht existiert. Du kannst die Ausgabe von Compare-Object nicht für eine einfache if-Bedingung benutzen. Wie Du siehst, hast Du 3 mögliche verschiedene Ergebnisse. Die kannst Du nicht mit einem einfachen if abfragen. Wenn Du das -IncludeEqual weglässt und nur darauf prüfst, ob von Compare-Object überhaupt Etwas ausgegeben wird, dann kannst Du eine einfache if-Bedingung benutzen - so wie es Jan oben empfohlen hatte. Das kommt darauf an, was Du im Anschluss mit dieser Information machen möchtest.
Stell Dir vor, Du hast einen Obstkorb und darin Äpfel, Birnen und Pflaumen (Mehrzahl). Und dann kommt jemand und fragt "Ist der Inhalt des Korbes gleich einer Birne?" ....
ZitatOder ist es hier entscheidend in welcher Zeile was steht?
Nö. Es sind einfach zu viele Ergebnisse für einen einfachen Ja-Nein-Vergleich.
-
OK. Tust Du mir bitte einen Gefallen und führst mal bitte den folgenden Code aus ... so wie er ist - nur mit Deinen Variablen?
$SourceACL = Get-Acl $Quelle | Select-Object -ExpandProperty Access $TargetACL = Get-Acl "\\$TargetServer\$Type\$Folder" | Select-Object -ExpandProperty Access Compare-Object -ReferenceObject $SourceACL -DifferenceObject $TargetACL -Property IdentityReference, FileSystemRights -IncludeEqual
Was erhältst Du als Ausgabe? ... ich gehe davon aus, dass Du ein paar Zeilen mit den Titeln IdentityReference, FileSystemRights und SideIndicator erhältst, richtig? Du hast also MEHRERE Zeilen mit dem gleichen Ergebnis. Und das versuchst Du mittels -eq '==' zu vergleichen. Das kann nicht zuverlässig funktionieren.
Und wenn es doch funktioniert, kannst Du dem Ergebnis nicht vertrauen. Wenn Du das -IncludeEqual weglässt, erhältst Du nur noch die Unterschiede - was Du ja möchtest. Und wenn es keine Unterschiede gibt, wird auch keine Ausgabe erzeugt.
-
Hmmm ... ich glaube, dass Du das ganze ein wenig (ganz schön) komplizierter angehst als nötig.
Wenn ich Dich richtig verstanden habe, willst Du Quell- und Ziel-ACL vergleichen und nur die Unterschiede sehen. Dann macht es aber keinen Sinn, die einzelnen Elemente der ACLs einzeln zu vergleichen. Lass Powershell die Arbeit machen.
So etwas wie das hier sollte genügen:
$SourceACL = Get-Acl $Quelle | Select-Object -ExpandProperty Access $TargetACL = Get-Acl "\\$TargetServer\$Type\$Folder" | Select-Object -ExpandProperty Access Compare-Object -ReferenceObject $SourceACL -DifferenceObject $TargetACL -Property IdentityReference, FileSystemRights
Damit vergleichst Du Quell- und Ziel-ACL und gibst ausschließlich die Unterschiede aus. Wenn es keine Unterschiede gibt - gibt es auch keine Ausgabe. Zur Kontrolle kannst Du ja einfach mal ein -IncludeEqual anhängen.
-
vor 11 Stunden schrieb Karl-Heinz:
... - ich setze Berechtigungen auf dieses Verzeichnis (aktuell noch mit icacls, weil ich es mit PS cmdlet (noch) nicht hin bekomme)
Wenn icacls den Job zufriedenstellend erledigt, gibt es meiner Meinung nach keinen Grund, das zwingend auf Powershell umzustellen. Die ein oder andere Aufgabe lässt sich mit einem dedizierten Spezial-Tool besser/zuverlässiger/einfacher/effizienter lösen, als mit Powershell. Auch wenn das inzwischen als das Schweizer Taschenmesser unter den Systemtools gilt.
-
... häufig auch als XY-Problem bekannt ...
-
vor 52 Minuten schrieb awe:
Die entsprechenden Dateinamen bestehen nur aus Buchstaben, daher kann ich diese die mit einer Zahl beginnen ausschließen, weil diese dann schon das Datum vorangestellt haben
Was Jan meint ist, dass Dein "Exclude-Muster" vielleicht ein bissl zu allgemein gehalten ist. Du würdest also nicht nur Dateien mit dem Format "20200720-blakeks.ods" aussortieren, sondern z.B. auch "0815-blasuelz.ods". Wenn das für Dich ok ist, kannst Du Jans Einwand einfach ignorieren. Falls nicht, solltest Du eventuell ein wenig mehr Aufwand treiben, um die gewünschten Dateien korrekt zu identifizieren.
-
vor 46 Minuten schrieb Dukel:
Oder die Anforderung war falsch kommuniziert ....
Ich habe den Eindruck, dass genau das sehr häufig das eigentliche Grundproblem darstellt. Gefühlt gelingt vielen nicht, einen Sachverhalt oder eine Aufgabe klar und eindeutig zu beschreiben. Von den vorhandenen Voraussetzungen und Abhängigkeiten ganz zu schweigen. Dann ist natürlich schwer - ich glaube auch für den Fragenden selbst - die Aufgabe wirklich zu verstehen und eine Lösungsstrategie zu entwickeln.
-
1
-
-
Cool. Danke für's Teilen.
-
vor 4 Minuten schrieb mde-blasi:
Und sämtliche Geräte die mit diesem User verwendet wurden, also Sprich Handy und Laptop wurden komplett abgeschalten und trotzdem sperrt sich das User Konto dauerhaft wieder.
So was ähnliches hatte ich vor 'ner Weile auch mal .... dann hat sich rausgestellt, dass der Kollege sein altes Tablet an die Tochter weitergegeben hatte, ohne seine Daten vorher zu entfernen ....
-
vor 9 Minuten schrieb awe:
... ich lese mich da nochmal mal ein
Das halte ich auch für eine sehr gute Idee ...
wenn Du ein bissl Zeit hast, kannst Du es Dir ja vom Erfinder erklären lassen. Getting Started with PowerShell 3.0 ... ist ein bissl älter, aber die Grundlagen sind immernoch die gleichen.
-
Wie ... "passiert nichts" ... nicht mal Fehlermeldungen?
Vorgesetzter über Excel-Liste via Script ins AD integrieren
in Active Directory Forum
Geschrieben
<OT>
Angeber!

.... und Du träumst bestimmt auch noch in Binär-Code!?

</OT>