我是Powershell的新手,我创建的代码可以删除文件,如果超过" x"天。
我差不多完成了。需要您的帮助来表示我的日期(表格),如果没有文件将被删除,则不应生成日志文件。
这是我的代码:
$max_days = "-30"
$curr_date = Get-Date
$del_date = $curr_date.AddDays($max_days)
$Path = "C:\Desktop\Code"
$DateTime = Get-Date -Format "D=yyyy-MM-dd_T=HH-mm-ss"
$itemsearch = Get-ChildItem C:\Test -Recurse | Where-Object { $_.LastWriteTime -lt $del_date}
Foreach ($item in $itemsearch)
{
Write "File:", $item.Name "Modified:", $item.LastWriteTime "Path:", $item.FullName "Date Deleted:" $del_date | Out-File "C:\Desktop\Code\Deleted\SFTP_DeleteFiles_WORKSPACE_$DateTime.txt" -append
$item | Remove-Item
}
任何人都可以帮助我吗?顺便说一句,它已经在工作了。
只需要以表格形式呈现数据,如果没有要删除的内容,就不要创建日志文件。
更新
已经通过以下方式解决了条件声明:
if($itemsearch)
{
Foreach ($item in $itemsearch)
{
Write "File:", $item.Name "Modified:", $item.LastWriteTime "Path:", $item.FullName "Date Deleted:" $del_date | Out-File "C:\Desktop\Code\Deleted\SFTP_DeleteFiles_WORKSPACE_$DateTime.txt" -append
$item | Remove-Item
}
}
else
{
Write "No files will be deleted."
}
谢谢!
我想在Excel /文本文件中显示它是这样的:
http://i59.tinypic.com/30wv33d.jpg
任何?
它给我带来了这个:
IsReadOnly;" IsFixedSize&#34 ;;" IsSynchronized&#34 ;;"键&#34 ;;"值&#34 ;;" SyncRoot上&#34 ;; "计数" 假;"假&#34 ;;"假&#34 ;;" System.Collections.Hashtable + KeyCollection&#34 ;;" System.Collections.Hashtable + ValueCollection&#34 ;; " System.Object的&#34 ;;" 4" 假;"假&#34 ;;"假&#34 ;;" System.Collections.Hashtable + KeyCollection&#34 ;;" System.Collections.Hashtable + ValueCollection&#34 ;; " System.Object的&#34 ;;" 4" 假;"假&#34 ;;"假&#34 ;;" System.Collections.Hashtable + KeyCollection&#34 ;;" System.Collections.Hashtable + ValueCollection&#34 ;; " System.Object的&#34 ;;" 4" 假;"假&#34 ;;"假&#34 ;;" System.Collections.Hashtable + KeyCollection&#34 ;;" System.Collections.Hashtable + ValueCollection&#34 ;; " System.Object的&#34 ;;" 4"
在Excel中。你有什么主意吗?我必须搜索它。
答案 0 :(得分:0)
要介绍表格式日志记录,我会使用CSV文件作为输出,方法是用以下代码替换foreach块:
$results = @()
foreach ($item in $itemsearch)
{
$success = $true
try
{
$item | Remove-Item
}
catch
{
$success = $false
}
if( $success -eq $true )
{
Write-Host $item.FullName 'successfully deleted.'
$results += [PSCustomObject]@{'File'=$item.Name;'Modified'=$item.LastWriteTime;'Path'=$item.FullName;'Date Deleted'=$del_date;'State'='SUCCESS'}
}
else
{
Write-Host 'Error deleting' $item.FullName
$results += [PSCustomObject]@{'File'=$item.Name;'Modified'=$item.LastWriteTime;'Path'=$item.FullName;'Date Deleted'=$del_date;'State'='ERROR'}
}
}
$results | Export-Csv -Path "C:\Desktop\Code\Deleted\SFTP_DeleteFiles_WORKSPACE_$DateTime.csv" -Encoding UTF8 -Delimiter ';' -NoTypeInformation
首先创建一个空数组($ results)。
try / catch块用于检测删除是否成功,然后将相应的行添加到$ results。
最后,$ results数组将导出为CSV,其中包含&#39 ;;'分隔符,以便您可以使用Excel立即打开它。