PowerShell脚本执行的结束时间

PowerShell脚本执行的结束时间,powershell,Powershell,我正在尝试在日志文件中写入此脚本的开始和结束日期。开始日期不是问题,但结束日期显然没有写入日志 $Target=\\share\dir1\dir2 设定开始时间 $StartTime=Get-Date.ToSortDateString+,+Get-Date.ToLongTimeString 获取ChildItem-Directory-Path$Target | 其中对象{$\ LastWriteTime-lt Get-Date.AddDays-60}}{ $folder=$\ux; 删除项$fo

我正在尝试在日志文件中写入此脚本的开始和结束日期。开始日期不是问题,但结束日期显然没有写入日志

$Target=\\share\dir1\dir2 设定开始时间 $StartTime=Get-Date.ToSortDateString+,+Get-Date.ToLongTimeString 获取ChildItem-Directory-Path$Target | 其中对象{$\ LastWriteTime-lt Get-Date.AddDays-60}}{ $folder=$\ux; 删除项$folder.FullName-Recurse-Force | Out Null $folder.FullName 设定结束时间 $EndTime=Get-Date.ToSortDateString+,+Get-Date.ToLongTimeString } | 将页脚写入日志 写入输出$Footer=@ $-*79 开始时间:$StartTime 结束时间:$EndTime $-*79 @ 输出文件$Target\Auto_Clean.log-Append-InputObject$Footer 清除脚本末尾的变量 $Target=$StartTime=$EndTime=$null 多亏了Stackoverflow的帮助,我找到了完整的答案

解决方案:

<作者:Me@site.com 删除超过x天的文件夹 2014/05/06脚本出生 2014/05/07将脚本的总运行时间添加到日志文件> ======================变量================================================== $Target=\\Share\dir1\dir2 $OlderHanddays=60 $Logfile=$Target\Auto_Clean.log =========================正文======================================================= 设定开始时间 $StartTime=Get-Date.ToSortDateString+,+Get-Date.ToLongTimeString 写入输出`n删除早于$olderHanddays的文件夹:`n 获取ChildItem-Directory-Path$Target | 其中对象{$\.LastWriteTime-lt Get Date.AddDays-$OlderHandays}ForEach{ $Folder=$\ux; 删除项$Folder.FullName-Recurse-Force | Out Null $Folder.FullName}| Tee对象$LogFile-同时将输出文件夹名称附加到控制台和LogFile 设置结束时间并计算运行时间 $EndTime=Get-Date.ToSortDateString+,+Get-Date.ToLongTimeString $timetake=newtimespan-Start$StartTime-End$EndTime 将页脚写入日志 写入输出$Footer=@ $-*79 开始时间:$StartTime 结束时间:$EndTime 总运行时间:$time $-*79 @ 创建日志文件 输出文件$LogFile-Append-InputObject$Footer 清除脚本末尾的变量 $Target=$StartTime=$EndTime=$olderHanddays=$null
你的问题似乎是你什么都不想管。在foreach循环之后有一个|,但所有对象都在循环中捕获,因此没有对象留给它进行管道传输。只要删除该管道字符,它就会工作

看起来您遇到了范围问题。var$EndTime不存在于foreach循环之外,因此一个简单的修复方法是在顶部定义它

设定开始时间 $StartTime=Get-Date.ToSortDateString+,+Get-Date.ToLongTimeString $EndTime
从“我的测试”的对象所在位置删除您的“最终”。还要确保有符合您的where对象的目录,因为这也会留下一个空白结束时间。

您是对的,出于测试目的,我将0改为60天。现在已正确更新问题。但问题依然存在。。脚本完成时的结束时间没有填写在日志文件中。当我删除Where对象后的最后一个管道时,它会获得结束时间。但是,已删除文件夹“$folder.FullName”的输出不再通过管道传输到日志文件。因此,我现在确实正确地获取了日期,但我不再在日志文件中获取foldername:我只是使用Tee对象命令将ForEach再次管道传输到日志文件。感谢您的帮助。为什么您要将其放入循环中,并在每次删除文件时不断重置它,而不是在循环完成后只执行一次?当我在Where对象之后删除最终管道时,它确实获得了结束时间。但是,已删除文件夹“$folder.FullName”的输出不再通过管道传输到日志文件。因此,我现在确实正确地获取了日期,但我不再在日志文件中获取foldername:我只是使用Tee对象命令将ForEach再次管道传输到日志文件。谢谢你的帮助