-
Gesamte Inhalte
2.096 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von BOfH_666
-
-
vor 3 Stunden schrieb Kuddel071089:
nur leider werden die Stellvertreter nicht hinterlegt.
Stellvertreter? ... Du meinst die Moderatoren, oder? Gibt's ne Fehlermeldung? Wie gibst Du die Moderatoren denn an - Email, DN, GUID?
-
vor 9 Stunden schrieb Peter Weinrich:
Wie macht ihr das?
Ganz allgemein gesprochen, musst Du einfach sicherstellen, dass kein Account der Schreibrechte auf die ursprünglichen Daten hat, auch Schreibrechte auf die Backup-Daten hat. Ein Verschlüsselungstrojaner verrichtet sein destruktives Werk ja üblicherweise mit den Rechten eines Benutzers, der auf die Nutz-Daten Schreibrechte besitzt.
-
Willkommen im MCSEboard.
Ohne auch nur ansatzweise Ahnung von dem Thema zu haben ... hast Du schon mal danach gegoogelt? Ich würde erwarten, dass Cisco mit den entsprechenden Informationen nicht hinterm Berg hält und man entsprechende Doku's relativ einfach finden kann.
-
vor 43 Minuten schrieb Squire:
Entweder kam das mit den PowerCLI von VMware oder NuGet ...
Es kommt mit Windows.
-
vor 3 Stunden schrieb daabm:
curl ist ein Alias für Invoke-Webrequest.
Das wusste ich tatsächlich. Aber wenn ich sowieso schon PowerShell nutze, würd ich dann lieber das cmdlet nutzen.
vor 3 Stunden schrieb daabm:Und eine curl.exe in System32 hat dann "irgendwer" da hinkopiert. "Aus dem Nichts" ist sie nicht vorhanden.
Das habe ich heute auch erst gelernt - Windows 10 und 11 bringen die tatsächlich schon mit - raus aus der Kiste - sozusagen.
Ist vielleicht nicht die aller-aller-aktuellste Version, aber vermutlich für 99% der Alltagsfälle ausreichend.
-
vor einer Stunde schrieb Kuddel071089:
die curl.exe unter System32 liegt
Achso?
vor einer Stunde schrieb Kuddel071089:rufe ich sie im PS Skript per cmd /C curl auf.
Warum das? Warum nicht direkt?
-
vor 7 Stunden schrieb Kuddel071089:
Wenn es das für Windows gibt, würde ich das natürlich auch versuchen.
Wieso "wenn"? Ich sag doch, dass es das gibt.
Kriegst Du's selbst gegoogled?
-
vor 11 Minuten schrieb Kuddel071089:
Das Ganze müsste ich jetzt in einen Powershell Befehl übersetzen.
Warum? curl gibt es auch für Windows.
-
vor 54 Minuten schrieb Osel:
Vielleicht beschreibe ich mein Problem so: Ich habe noch Verständnisprobleme mit dem Ansprechen einer Variable. $_. ist z. B. eine Besonderheit von dem where-object. Ich glaube auch zu wissen, dass immer nur ein Objekt über die Pipe "wandert".
$_ representiert immer das jeweilige Pipeline-Objekt an der aktuellen Stelle der Pipeline. Möchtest Du an einer späteren Stelle der Pipeline auf Elemente von einer früheren Stelle zugreifen, musst Du an der Stelle den "common Parameter" "-PipelineVariable" einsetzen, von dem Du später die Werte anzeigen möchtest. Also so, wie ich das in meinem Code-Beispiel gemacht habe.
Hier noch ein bissl Material zum Nachlesen:
https://fercorrales.com/powershell-practical-use-of-pipelinevariable-common-parameter/
https://mcpmag.com/articles/2016/12/15/pipelinevariable-common-parameter.aspx
Eine weitere häufig genutzte Möglichkeit wäre, eine Schleife einzusetzen und darin ein "[PSCustomObject]" zu benutzen:
$Result = Get-ChildItem -Path 'U:\Eigene Dateien\Privat' -Recurse -filter *.pdf | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-300) } | ForEach-Object { $ACL = Get-Acl -Path $_.FullName [PSCustomObject]@{ Owner = $ACL.Owner Name = $_.Name FullName = $_.FullName LastWriteTime = $_.LastWriteTime } } $Result
-
1
-
-
vor 8 Minuten schrieb Osel:
Die Ergebnisse werden auch in zwei Variablen gespeichert und angezeigt.
Wieso 2? Warum zeigst Du den Code nicht so, wie Du ihn auch verwendest?
vor 8 Minuten schrieb Osel:Hier hatte ich bisher auch das Problem, dass ich diese Variablen "am Ende" (auch mit Select-Objekt) nicht ansprechen konnte.
?? Je konkreter Deine Frage ist (und der Code, den Du zeigst), desto konkreter fallen auch die Antworten aus.
vor 8 Minuten schrieb Osel:Ich habe gelernt, dass Variablen ja global oder nur innerhalb eines Blocks gültig sind.
Wie so häufig - es kommt darauf an.
Ja - variablen haben einen "Scope" in dem sie "gültig" sind. Das sollte aber beim "Rumprobieren" in der Konsole oder ISE order VSCode erstmal keine Rolle spielen.
Funktioniert der Code, den ich oben noch angefügt habe?
-
Markus,
willkommen im MCSEboard.
vor 32 Minuten schrieb Osel:Zum Beispiel möchte ich zur Kontrolle anstelle des Remove-Item mir vorher die Liste der zu löschenden Dateien ausgeben lassen.
Eine einfache Möglichkeit ist es, das Ergebnis der Abfrage in einer Variablen zu speichern und diese einmal auszugeben. Wenn alles wie gewünscht aussieht, könntest Du mit der Variablen weiterarbeiten und deren Inhalt einfach an "Remove-Item" weiterreichen. Statt "Write-Host" solltest Du dann aber bitte "Select-Object" benutzen.
$Result = Get-ChildItem -Path 'U:\Eigene Dateien\Privat' -Recurse -filter *.pdf | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-300)} -PipelineVariable CurFile | Get-acl | Where-Object {$_.owner -like '*q0219005*'} | Select-Object -Property Owner, @{Name = 'LastWriteTime'; Expression= {$CurFile.LastWriteTime}}, @{Name = 'FullName'; Expression= {$CurFile.FullName}} $Result $Result | Remove-Item -WhatIf
So ungefähr könnte es aussehen ... !! ungetestet - bitte vorher mit Test-Daten prüfen !!
-
1
-
-
vor 6 Minuten schrieb massaraksch:
dann fliegt man beim ersten Auftreten eines Fehlers aus der umgebenden foreach-Schleife raus. Ende Gelände.
Das wär mir neu.
Versuch mal Folgendes in einem beliebigen Verzeichnis:
Get-ChildItem | ForEach-Object { try { Get-ItemProperty -Path 'bla keks' -ErrorAction stop } catch { 'bla keks' } }
Du wirst so viele "Blakekse" sehen, wie es Dateien und Ordner in diesem Verzeichnis gibt.
-
...
vor 55 Minuten schrieb cj_berlin:ich verwirre Dich mal noch mehr, aber hier ist ein etwas dynamischerer Ansatz:
Angeber!
vor 2 Stunden schrieb Busfan:Das hat mit den Bindestrichen nichts zu tun, die Gruppenname steht ja in Anführungszeichen.
Ich habe natürlich mehr probiert und nicht nur copy/paste versucht weil ich es ja auch verstehen will.
Ich versuche es derzeit mit der ISE, schaue mir aber gerne VS Code an.
In der Zeile mit der "Office" Gruppe fehlt am Ende etwas, daher der Fehler
Die Ursache für solche Fehler liegt nach meiner Erfahrung meistens in ungewöhnlichen, in der ISE nicht sichtbaren Zeichen, wenn man den Code aus z.B. Word oder manchmal auch aus einem Browserfenster kopiert. Deshalb wäre VSCode als IDE auch besser geeignet, weil dort die PowerShell-Erweiterung inzwischen solche Zeichen speziell markiert und auf potenzielle Fehler hinweist.
Versuch mal bitte, Deinen Code einmal in ein Windows-Notepad-Fenster zu kopieren und dann von dort wieder zurück in eine neue frische PS1-Script-Datei. Das eliminiert meistens solche Zeichen.
-
1
-
-
vor 9 Minuten schrieb Busfan:
Da hat er ein Problem mit dem "-" in dem Gruppennamen?
Entweder Du ersetzt den "-" mit einem anderen Zeichen ... z.B. einem "_", oder ...
vor 10 Minuten schrieb Busfan:Ich habe den Gruppennamen auch schon in Anführungszeichen gesetzt.
Du setzt ALLE Schlüsselnamen (die Bezeichnungen links vom Gleichheitszeichen) in Anführungszeichen (einfache oder doppelte).
Ich würde ja die Namen deutlich kürzer und weniger redundant gestallten ... z.B. "OfficeBerechtigt" für den ersten und bei allen weiteren den Teil "remotedesktop-user" einfach weglassen.
Noch ein Hinweis: Der Index eines Arrays in PowerShell beginnt bei "0"!! Mit "$GroupList[1]" erhältst Du also bereits das zweite Element des Arrays.
Und noch ein Hinweis: bitte keine Screenshots von Code oder Konsolen-Output posten. Anstatt dessen, den Text posten und als Code formatieren. Dann kannst Du sensible Informationen auch leichter aus-X-en.
-
1
-
1
-
-
vor 57 Minuten schrieb Busfan:
BOfH_666 ist der coolste Nick den ich kenne
Danke.
vor 57 Minuten schrieb Busfan:Es gibt 6 verschiedene TS Farmen mit entsprechenden AD Securitygroups dahinter für die Userberechtigungen
OK, es geht also nicht um ALLE Gruppen eines ADs - dann hätte ich Deine Idee für untauglich gehalten, sondern nur einige wenige spezifische.
... und weil bald Weihnachten is, ....
$SearchBase = 'OU=Users,DC=Contoso,DC=de' $GroupList = 'CN=Group1,OU=Groups,DC=Contoso,DC=de', 'CN=Group2,OU=Groups,DC=Contoso,DC=de', 'CN=Group3,OU=Groups,DC=Contoso,DC=de', 'CN=Group4,OU=Groups,DC=Contoso,DC=de' $UserList = Get-ADUser -Filter * -SearchBase $SearchBase -Properties MemberOf $Result = foreach ($UserName in $UserList) { [PSCustomObject]@{ UserName = $UserName.sAMAccountName Group1 = If($UserName.MemberOf -contains $GroupList[0]){'x'} Group2 = If($UserName.MemberOf -contains $GroupList[1]){'x'} Group3 = If($UserName.MemberOf -contains $GroupList[2]){'x'} Group4 = If($UserName.MemberOf -contains $GroupList[3]){'x'} } } $Result | Format-Table -AutoSize
... bei 800 Usern halte ich eine solche Ansicht immernoch für untauglich ... aber wenn Du Dir eine Pivot-Tabelle draus bastelst, kannst Du Dir die Daten ja nach den jeweils benötigten Kriterien anzeigen lassen.
Ein Hinweis noch: Du musst hier tatsächlich mit den exakten "DistinguishedNames" der Gruppen arbeiten, sonst findet der "-contains" Operator keine Übereinstimmung.
-
vor 1 Stunde schrieb Busfan:
Ich würde mir gerne eine Matrix bauen (Excel.csv) die mir auflistet welche User in welchen Gruppen sind.
Wozu soll diese Matrix denn dienen?
-
Ohne auf den Rest Deines Codes einzugehen ... Du könntest Dir den String/Wert für "-Identity" vorher zusammenbauen und dann als komplette Variable übergeben:
$Identity = '{0}:\Posteingang' -f $element Get-MailboxFolderPermission -Identity $Identity
-
1
-
-
Ah ... ok ... dann war's das.
-
Klaus Dieter,
Willkommen im MCSEboard.
vor 11 Minuten schrieb KlausDieter1982:Wo habe ich da einen Denkfehler?
... kein Denkfehler ... das ist leider unter bestimmten Voraussetzungen ein Feature by Design. Wenn Du den Befehl lokal auf einem OnPremisses-Exchange-Server ausführst, hast Du an der Property "DatabaseSize" noch die "Sub-Property" .Value. Bei einem Remote-Zugriff existiert diese Sub-Property leider nicht mehr. Da müsstest Du dann mit einer calculated Property die Bytes aus den Klammern extrahieren und danach sortieren.
Übrigens ... wenn Du Code, Konsolen-Output oder Beispieldaten postest, formatier die bitte mal als Code. Danke schon mal im Voraus.
-
... und dabei ist die ganze Auswahl auch viel weniger umfangreich, als man uns das glauben machen will ...
-
1
-
-
Da alle aktuellen Browser mit dem Speicher alles andere als sparsam umgehen, könnte ein bissl mehr RAM eventuelle eine Entspannung bringen.
-
1
-
-
Bei mir sind im Moment 6 Tabs zu 16 Prozessen
-
vor 14 Minuten schrieb Mario-HS:
Wie im ersten Post gesagt, ich habe mir vorgenommen, allerlei Befehle und Skripte, die ich mit der Zeit eingeprägt/erstellt habe, ein eine Art Tool zu verpacken.
Meiner Meinung nach wäre dann ein PowerShell-Modul die bessere Wahl. Das ist ist deutlich flexibler, leichter zu pflegen und weniger fehleranfällig, denke ich.
-
vor 15 Minuten schrieb grbennemsi:
Dies sollte ja das Datum vor einem Jahr in die Variable $GetDate laden. leider ohne Erfolg. In der Tabelle habe ich Daten bis ins Jahr 2023:
Dann zitiere ich mich mal selbst ...
vor 3 Stunden schrieb BOfH_666:Wenn das auch nix bringt ... vielleicht baust Du Deinen Code ein bissl um, um das Error-Handling zu erleichtern. Statt des "Where-Object" eine Schleife benutzen und die jeweiligen Variablen-Inhalte und -Typen ausgeben.
Dateizugrifsrechte auf alle Dateien im einem Ordner ändern.
in Windows Server Forum
Geschrieben
Nur mal aus Neugier ... was willst Du denn mit dieser Änderung erreichen?