also wollte ich meinen Einzeiler zum Löschen von Elementen aktualisieren. Ich möchte den Hauptdateipfad (\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test) in zwei Variablen aufteilen, die oben im Skript definiert sind. So etwas wie:
- $rootdir = "\HQDEVAPP004\C$\LoneStar"
- $svcdir = {hier Dienstnamen einfügen} (z. B. Nachrichtenrouter, Prozessorhandler)
Und erstellen Sie dann eine dritte Variable, die den vollständigen Verzeichnispfad darstellt und einfach 1 + 2 zusammenfügt. Ich weiß, dass dies einfach mit dem Operator „+“ möglich ist. Bitte korrigieren Sie mich, wenn ich falsch liege.
Die Idee ist, dass ich irgendwann eine Foreach-Schleife ausführen kann, um den SVCDir-Pfad zu erfassen und festzulegen, den vollständigen Verzeichnispfad, in dem Sie Dateien löschen möchten, dynamisch zusammenzufügen, den Löschvorgang auszuführen und dann zum Ordner des nächsten Dienstes zu wechseln. Ich hoffe, ich habe das richtig erklärt. Wenn Sie zufällig die Einzeiler-Anweisung sehen möchten, die ich verwendet habe, füge ich sie hier unten ein:
Get-ChildItem -recurse \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* | Remove-Item
Antwort1
Zunächst einmal Remove-Item
akzeptieren die Path- und LiteralPath-Eigenschaften Platzhalter, sodass Ihr aktueller Einzeiler bereits ohne funktioniertGet-ChildItem
Remove-Item \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* -Recurse -Force
Zum "Zusammenkleben" würde ich entweder den Join-Path
oder den Format-Operator vorschlagen -f
.
Join-Path
Beispiel (um Backslashes musst du dir dabei keine Gedanken machen):
PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar"
PS C:\> $svcdir = "Message Router"
PS C:\> Join-Path $rootdir $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router
-f
Beispiel (beachten Sie, {0}
dass dort das von Ihnen angegebene Argument platziert wird):
PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar\{0}"
PS C:\> $svcdir = "Message Router"
PS C:\> $rootdir -f $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router
Sie können also alle Pfade mithilfe von foreach durchsuchen und diese Verbindungsvorgänge durchführen. Sie können jedoch auch einfach alle gewünschten Pfade direkt angeben, Remove-Item
da das Programm ein Array verarbeiten kann:
cd "\\HQDEVAPP004\C$\LoneStar"
Remove-Item ".\Message Router\*.*",".\SomeOtherPath" -Recurse -Force