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