Как я могу рекурсивно удалить папку с числовыми именами, используя PowerShell - PullRequest
0 голосов
/ 04 июня 2018

У меня есть скрипты, которые удаляют папки на основе их модифицированных дат.Может кто-нибудь помочь мне удалить, если имя папки содержит только цифру?

$locations=import-csv "C:\Temp\Scripts\AgeOffDirsGeneral.csv"

foreach ($location in $locations)
{

    $Source=$location.Source

    Get-ChildItem  $source  |Where-Object  {$_.psiscontainer}  | Foreach-Object {Remove-Item  -Recurse  -Force $_.FullName}

}

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Мне удалось исправить это с помощью тега -like.

$locations=import-csv "C:\Temp\Scripts\AgeOffDirsGeneral.csv"
foreach ($location in $locations)
{
    $Source=$location.Source
    Get-ChildItem  $source  | Where-Object {  $_.psiscontainer -and $_.Name -like '*[0-9]*' } | Foreach-Object {Remove-Item  -Recurse  -Force $_.FullName}
}
0 голосов
/ 04 июня 2018

Remove-Item принимает ввод по каналу, поэтому ForEach не требуется.
Если вывод выглядит нормально, удалите -WhatIf

locations=import-csv "C:\Temp\Scripts\AgeOffDirsGeneral.csv"

foreach ($location in $locations){

    $Source=$location.Source

    Get-ChildItem  $source -Dir -Recurse|
      Where-Object  { $_.Name -match '^\d+$'}  | 
        Remove-Item -Force -WhatIf
}

Кстати, промежуточную переменную $ source можно было бы избежать, вставив $ location напрямую.Source

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...