Усовершенствование простого однострочного удаления элемента

Усовершенствование простого однострочного удаления элемента

поэтому я хотел обновить свой delete-item one-liner. Я хочу разбить основной filepath(\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test) на 2 переменные, которые определены в верхней части скрипта. Что-то вроде:

  1. $rootdir = "\HQDEVAPP004\C$\LoneStar"
  2. $svcdir = {вставьте имя службы здесь} (т.е. маршрутизатор сообщений, обработчики процессоров)

А затем создайте третью переменную, которая будет полным путем к каталогу, которая просто склеит 1 + 2 вместе, что, как я знаю, можно сделать с помощью оператора «+». Пожалуйста, поправьте меня, если я ошибаюсь.

Идея в том, что в конечном итоге я смогу запустить цикл foreach, чтобы захватить и установить путь svcdir, динамически склеить вместе полный путь каталога, где вы хотите удалить файлы, запустить процесс удаления, а затем перейти к папке следующей службы. Надеюсь, я правильно объяснил. Если вдруг вам захочется увидеть одну строку, которую я использовал, я приведу ее ниже:

Get-ChildItem -recurse \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* | Remove-Item

решение1

Прежде всего, свойства Path и LiteralPath Remove-Itemпринимают подстановочные знаки, поэтому ваш текущий однострочный код будет работать и без них.Get-ChildItem

Remove-Item \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* -Recurse -Force

По поводу «склеивания» я бы предложил либо оператор Format Join-Path, либо оператор Format -f.

Join-Pathпример (в этом случае вам не придется беспокоиться об обратных слешах):

PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar"
PS C:\> $svcdir = "Message Router"
PS C:\> Join-Path $rootdir $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router

-fпример (обратите внимание, {0}что именно здесь будет размещен указанный вами аргумент):

PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar\{0}"
PS C:\> $svcdir = "Message Router"
PS C:\> $rootdir -f $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router

Итак, да, вы можете выполнить foreach по всем путям и выполнить склеивание, однако вы также можете просто указать все нужные вам пути напрямую, Remove-Itemпоскольку он может обрабатывать массив:

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

Связанный контент