-1

У меня есть скрипт, который очищает файлы и папки старше x дней, но я должен сделать его немного более безопасным. Сценарий, как если бы кто-то создал ссылку на, например, программные файлы, все в этом месте также удаляется. Как я могу защитить свой скрипт от точек соединения

$path = "\\server\D$\Temp"
$items = get-childitem $path -Force -Recurse 

foreach($item in $items)
{
            $subitems = get-childitem -recurse -path $item.fullname
            foreach($subitem in $subitems)
            {
                if($subitem.lastwritetime -lt (date).adddays(-4))
                {
                    $filename = $subitem.fullname
                    if($filename -ne $null)
                    {
                        #Use below code to specify file type


                            "Remove item: " + $filename + " - " + $subitem.lastwritetime
                            remove-item $filename -recurse -WhatIf


                }
             }
        }
        $subitems_after = get-childitem -recurse -path $item.fullname
        if($subitems_after.Count -eq 0)
        {
            "Remove item: " + $item
            remove-item $item.FullName -WhatIf
        }

}

1 ответ1

0

Попробуйте следующий скрипт, он может отфильтровать папки точек монтирования и перечислить общие папки (вы также можете добавить временной фильтр в эту функцию или сделать это позже):

 function dir_NoMP ( $i ) {
        #check if it is a mount point folder
        $z = ( (get-item $i).Attributes -band [IO.FileAttributes]::ReparsePoint )

        #if it it not an empty folder call function itself
        if ( ($x =(Get-ChildItem $i -Directory ).fullname) -and (!$z ) ) { 

         #if it is a mount point , filter it out .
         $x | foreach {if ( !( (get-item $_).Attributes -band [IO.FileAttributes]::ReparsePoint ) ) {$_} } ;

         foreach ($y in $x) { dir_NoMP $y } }

    }  
    dir_nomp "d:\test"

После этого вы можете делать то, что вы хотите для этих перечисленных папок.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .