Verfeinerung eines einfachen Einzeilers zum Löschen von Elementen

Verfeinerung eines einfachen Einzeilers zum Löschen von Elementen

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:

  1. $rootdir = "\HQDEVAPP004\C$\LoneStar"
  2. $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-Itemakzeptieren 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-Pathoder den Format-Operator vorschlagen -f.

Join-PathBeispiel (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

-fBeispiel (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-Itemda das Programm ein Array verarbeiten kann:

cd "\\HQDEVAPP004\C$\LoneStar"
Remove-Item ".\Message Router\*.*",".\SomeOtherPath" -Recurse -Force

verwandte Informationen