Powershell - Befehlsausgabe in Variable speichern

Hallo zusammen,

ich habe hier ein PowerShell-Skript, welches mir auf unserem Exchange-Server (Windows Server 2012 R2, Exchange 2016 CU9) Log-Dateien mit einer bestimmten Endung löschen soll, wenn diese älter als 7 Tage sind.


Knackpunkt ist die Zeile "$Files = Get-ChildItem.......". Ab dieser Stelle produziert das Skript einen Fehler, dass es nicht den Inhalt auslesen kann (Permission denied). Führe ich den Befehl jedoch über die Shell direkt aus, ohne den Inhalt in eine Variable zu speichern, dann klappt alles.

Dieses Skript ging bis letzte Woche noch und wir haben kein Update eingespielt oder sonst irgendeine Anpassung am System vorgenommen.

Wo habe ich hier den Denkfehler? Ich sehe den Wald vor lauter Bäumen nicht.

Vielen Dank schonmal im Vorraus.

Stephan

Content-Key: 383236

Url: https://administrator.de/contentid/383236

Ausgedruckt am: 21.01.2022 um 10:01 Uhr

Mitglied: MarkBeaker
MarkBeaker 13.08.2018 um 15:07:19 Uhr
Goto Top
Hallo Stephan,

ich habe den Code mal schnell etwas zusammengekürzt, was aber an der Funktion nichts ändern sollte.
Soweit ich das sehe, hast du mal keinen Fehler im Code:


Kann es sein, dass du zwar über die Shell auf einen Pfad zugreifen kannst ,sprich rechte hast (als Admin?) und dann wenn du das Script so startest nicht hast?
Vielleicht versucht du mal Ordner für Ordner durch.
Bei mir macht es am Client mal keinen Unterschied, ob du es über die Shell oder so ausführst.

Grüße
Christian
Mitglied: emeriks
emeriks 13.08.2018 um 19:58:55 Uhr
Goto Top
Hi,
spontan fällt mir auf
$_.LastWriteTime -le "$LastWrite"
Sollte das nicht einfach lauten ..?

Aber zur Frage:
Du willst uns sagen, wenn Du
kommt ein Fehler, aber wenn Du
dann kommt keiner?

Reden wir von Scheduled Task?
Falls ja:
Permission denied
suggeriert mir, dass Du den Task "mit höchsten Privilegien" laufen lassen musst?

E.
Mitglied: diemilz
diemilz 14.08.2018 um 09:42:34 Uhr
Goto Top
Hi,

die Anführungszeichen waren mal zu Testzwecken drin, ich habe vergessen, die rauszunehmen. Es funktioniert aber in beide Richtungen, also mit und ohne.

Richtig, der Fehler kommt nur, wenn ich die Ausgabe des Befehls in eine Variable speichern möchte. Führe ich den Befehl direkt auf der PowerShell aus (privilegiert), kommt der Fehler nicht. Das Skript ist bereits als Scheduled Task mit höchsten Privilegien hinterlegt. Gibt es irgendwo in der Powershell neben den Execution-Policies (RemoteSigned, Skript ist lokal) noch weitere Policies, die ich bislang nicht kenne?

Wenn ich das Skript über eine privilegierte Shell direkt starte, taucht der Fehler auch auf. Der ausführende Benutzer hat volle Lese- und Schreibrechte auf die Ordner.

Grüße

Stephan
Mitglied: emeriks
emeriks 14.08.2018 um 09:50:28 Uhr
Goto Top
Gut, dass ich gefragt habe. Denn Deine Aussage sind immer noch etwas "wirr", sorry.

Ich verstehe immer noch nicht, warum Du schreibst
Führe ich den Befehl direkt auf der PowerShell aus
Wie machst Du das denn anders ("indirekt"?), wenn Du
die Ausgabe des Befehls in eine Variable speichern
?

Wenn ich das Skript über eine privilegierte Shell direkt starte, taucht der Fehler auch auf.
Na dann brauchen wir also nicht mehr über den Scheduled Task zu reden. Das wäre geklärt.

Also mal klare Frage-Antwort:
Was kommt, wenn Du ohne Skript direkt auf der Kommandozeile eingibst: ?
Mitglied: diemilz
diemilz 14.08.2018 um 10:02:56 Uhr
Goto Top
Also, ich versuche es nochmal deutlicher zu erklären:

Wenn ich den Befehl
auf der Kommandozeile ausgebe, dann gibt es die o.g. Fehlermeldung "Permission denied".

Wenn ich den Befehl
auf der Kommandozeile eingebe, dann gibt es keine Fehlermeldung und ich erhalte ganz normal die Ausgabe.

Wenn ich das Skript in einer privilegierten PowerShell starte, kommt ebenfalls die Fehlermeldung.
Mitglied: emeriks
Lösung emeriks 14.08.2018 um 10:47:48 Uhr
Goto Top
OK, danke.
Habe jetzt auch keine Idee mehr ...
Klammern?
Und wenn nur...?
Mitglied: diemilz
diemilz 14.08.2018 um 10:54:28 Uhr
Goto Top
Ok, das mit den Klammern hat schonmal funktioniert, jetzt läuft das Skript wieder normal durch.

Stellt sich mir jetzt nur noch die Frage, wieso das Skript vorher auch ohne lief. Kein Update installiert, keine Einstellung angepasst.............. Ich verstehs nicht.
Heiß diskutierte Beiträge
question
Windows XP: IE 8 zeigt keine Seiten mehr an :-) gelöst altmetallerVor 1 TagFrageWindows XP21 Kommentare

Huhu, ich habe hier tatsächlich noch einen Dell Dimension 9100 (Pentium IV, 3Ghz) stehen, den ich mit einer NVIDIA Quadro FX 540 und 4GB RAM ...

question
Datensicherung nach Geschäftsaufgabefboy33Vor 1 TagFrageBackup8 Kommentare

Guten Tag liebe (ex) Kollegen, nun nach 50 Jahren EDV, habe ich meine Firma abgemeldet und bin in den Ruhestand gegangen. Mein Problem, was mache ...

question
Ethernet über Telefonleitung gelöst Net-ZwerKVor 1 TagFrageLAN, WAN, Wireless8 Kommentare

Moin! Ich suche einen Konverter, mit dem ich auf eine Telefonleitung (2 Draht) ein Netzwerksignal legen kann. Geht darum, dass ich beim einem Kunden einen ...

question
PLEX bricht im HEIMNETZ nach 1 Minute Film abStrahlemann-69Vor 1 TagFrageUbuntu9 Kommentare

Hallo an alle, ich hab mir den Plexserver auf Proxmox installiert und mein NAS eingebunden. Er ließt auch alles ein und funktioniert. Nun laß ich, ...

question
O365 Outlook + Teams sperren gelöst sraL91Vor 20 StundenFrageMicrosoft Office17 Kommentare

Hallo Zusammen, wir haben in unserer Firma Office 365 ausgerollt und ich stehe nun vor folgendem Problem. Unsere Firma sind in 50 Standorte unterteilt und ...

question
MFA mit Microsoft?cseVor 17 StundenFrageWindows Userverwaltung6 Kommentare

Hi Leute, ich hoffe ihr könnt mir ein wenig helfen. Von unserer Gruppe (central IT im Ausland) verlange ich (im Zuge TISAX Audit) auf unseren ...

question
Image auf zweiten Laptop kopierenmario28Vor 1 TagFrageWindows Installation5 Kommentare

Hallo zusammen, ich habe mir für daheim zwei Mal den gleichen Laptop bestellt (Schenker Via 15 Pro M20) und nach Erhalten mit dem ersten begonnen, ...

question
PC - Komplettsicherunggreenhorn1Vor 21 StundenFrageBackup10 Kommentare

Hallo, welche Möglichkeit gibt es an Sicherungen, wo man das gesamte System Win10 sichern kann? Sodass ich mit einer Sicherung einen neuen PC 1 zu ...