我创建了以下脚本来检查服务器中特定路径上剩余的文件。
我在下面的问题请帮助我。
请帮助我微调以下脚本
$fullPath = "\\server\D$\fn_1"
$numdays = 0
$numhours = 0
$nummins = 1
function ShowOldFiles($path, $days, $hours, $mins)
{
$files = @(get-childitem $path -include *.* -recurse | where {($_.LastWriteTime -lt (Get-Date).AddDays(-$days).AddHours(-$hours).AddMinutes(-$mins)) -and ($_.psIsContainer -eq $false)})
if ($files -ne $NULL)
{
for ($idx = 0; $idx -lt $files.Length; $idx++)
{
$file = $files[$idx]
write-host ("File Name: " + $file.Name, ", Pending Since : " + $file.CreationTime) -Fore Red
}
}
}
ShowOldFiles $fullPath $numdays $numhours $nummins
答案 0 :(得分:0)
要转储到文件,请将整个for
循环替换为:
$files | select-object Name,@{name="Pending Since";Expression={$_.CreationTime}}|export-csv -notypeinfo -path c:\output.csv;
这将生成一个CSV文件,其中列出了您的所有文件及其创建时间。将最终交付/演示文稿的格式保存到用户(在这种情况下,您可以格式化Excel中的列,然后保存为XLSX)。
要通过电子邮件发送,您可能希望将其转换为HTML。
$filesForEmail = $files | select-object Name,@{name="Pending Since";Expression={$_.CreationTime}} | convertto-HTML;
send-mailmessage -to RECIPIENT -from FROM -subject "Your file listing" -body $filesForEmail -BodyAsHTML -smtpserver smtp.yourcompany.com
答案 1 :(得分:0)
您可以通过get-date运行并使用-format命令和标准DateTime格式选项(http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo(VS.85).aspx)来格式化CreationTime值。试试这一行:
write-host ("File Name: " + $file.Name, ", Pending Since : " + $(get-date $file.CreationTime -format "dddd, MMMM d, yyy h:mm tt")) -Fore Red
此处的主要部分是将$file.CreationTime
替换为$(get-date $file.CreationTime -format "dddd, MMMM d, yyy h:mm tt")
。这是一个相当标准的日期/时间格式,12小时格式。如果需要,您可以获得更详细的信息并更早地定义格式并仅输出相关信息(例如,如果days = 0,则从日期格式中排除)。