2017-02-03 5 views
1

ごみ箱の削除や地図の場所にファイルを削除しなければならないときは、スクリプトに問題が発生しました。作業。ゴミ箱にリサイクル+サイレント継続を追加する

問題は、私はを継続黙っ再帰-ErrorActionを追加する必要があるということです。しかし、ゴミ箱にファイルを移動する方法は私の意見では非常に難しいので、私はそれをどうやって行うことができないのか分かりません。

あなたは私を助けてもらえますか?

マイコード:

## Top of the script 
    param(
    [Parameter(Mandatory=$true)] 
    [ValidateRange(0,99999)] 
    [int]$minutes, 

    [Parameter(Mandatory=$true)] 
    [ValidateScript({Test-Path $_})] 
    [string]$maplocation, 

    [Parameter(Mandatory=$true)] 
    [ValidateSet("Direct","TrashBin")] 
    [string]$consequence 
) 

    ## Variables 
$maxAge = (Get-Date).AddMinutes(-$minutes) 
$files = Get-ChildItem $maplocation -Recurse 
$time = get-date 
$fortrashbin = $maplocation + '\' + $file 

## 
foreach ($file in $files) 
{ 
    if ($file.lastwritetime -lt $maxage) 
    { 
     switch ($consequence) 
     { 
      "direct" 
      { 
       write-verbose "File Found $file" -verbose 
       remove-item $file.fullname -recurse -erroraction silentlycontinue 
       write-verbose "Deleting $file" -verbose 
      } 
      "trashbin" { 
       write-verbose "File Found $file" -verbose 
       write-verbose "moving $file to trashbin" -verbose 
       Add-Type -AssemblyName Microsoft.VisualBasic 
       [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile($fortrashbin,'OnlyErrorDialogs','SendToRecycleBin') 
      } 
     } 
     } 
} 

答えて

0

私はあなたがフォルダを削除する場合は、各ファイルを反復する必要はありませんと思います。今、あなたが場所を削除するには、パラメータなしでスクリプトを呼び出すことができます

param 
(
    [Parameter(Mandatory=$true)] 
    [ValidateRange(0,99999)] 
    [int]$minutes, 

    [Parameter(Mandatory=$true)] 
    [ValidateScript({Test-Path $_})] 
    [string]$maplocation, 

    [Parameter(Mandatory=$false)] 
    [switch]$Direct 
) 

​​

も同じよう[switch]であなたの$consequenceパラメータを交換することを検討してください:代わりに、DeleteDirectoryメソッドを使用することができますゴミ箱に入れたり、スイッチを-Directと交換して完全に取り外してください。

関連する問題