File 如果为true,则将lastwritetime输出到文件,如果为false,则在屏幕上打印文本
|我拼凑了一个小脚本,在屏幕上显示正在处理的文件,让管理员知道脚本正在工作,然后将过去6个月内修改过的任何文件的名称输出到tx.t或csv:File 如果为true,则将lastwritetime输出到文件,如果为false,则在屏幕上打印文本,file,powershell,if-statement,File,Powershell,If Statement,|我拼凑了一个小脚本,在屏幕上显示正在处理的文件,让管理员知道脚本正在工作,然后将过去6个月内修改过的任何文件的名称输出到tx.t或csv: get-childitem z:\directory\ -recurse | %(write-host Processing File: $_.fullname; $_} | Where{$_.lastwritetime -gt (get-date).addDays(-182) | out-file C:\scriptoutput\ 这似乎工作得很好,但
get-childitem z:\directory\ -recurse | %(write-host Processing File: $_.fullname; $_} | Where{$_.lastwritetime -gt (get-date).addDays(-182) | out-file C:\scriptoutput\
这似乎工作得很好,但我想调整它来,使之
1.它仍然提到文件正在处理中。
2.如果该目录和子目录中没有任何项目,则不会输出文件,而只是在屏幕上打印没有超过6个月的文件
我一直在尝试以下几点:
$Files= @(get-childitem z:\directory\ -recurse | where{$_.lastwritetime -gt (get-date).AddDays(182)} | %{write-host processing file: %_.fullname' $_})
If ($Files.lastwritetime -gt (get-date.adddays(-182))} | out-file 'c:\scriptoutput\'
Else ($files.lastwritetime lt (get-date.adddays(-182))} | {write-host "****NO FILES WERE MODIFIED IN THE LAST 6 MONTHS****})
显然这不起作用,在if(condition)错误之后,我得到了一个缺少的statemnt块。有谁能帮助一个彻头彻尾的NOOB解决这个问题吗
非常感谢,这是一个简单的打字问题。命令
%{write-host processing file: %_.fullname' $_}
包含不平衡的引号。试一试
%{write-host "processing file: %_.fullname" $_}
为了捕获此类错误,请使用诸如SciTE或内置Powershell ISE之类的编辑器。编辑器具有语法元素的颜色提示。当遇到不平衡的报价时,结果看起来一团糟。请注意,许多文本是青色的,而不是蓝色和黑色的:
这是一个简单的打字问题。命令
%{write-host processing file: %_.fullname' $_}
包含不平衡的引号。试一试
%{write-host "processing file: %_.fullname" $_}
为了捕获此类错误,请使用诸如SciTE或内置Powershell ISE之类的编辑器。编辑器具有语法元素的颜色提示。当遇到不平衡的报价时,结果看起来一团糟。请注意,许多文本是青色的,而不是蓝色和黑色的:
我想提出类似的建议,但我不太确定这是否就是你想要的
$files = @(get-childitem z:\directory\ -recurse | where {$_.lastwritetime -gt (get-date).AddDays(-182)})
if ($files.Count -gt 0)
{
$files | %
{
$_.FullName | Out-file 'c:\scriptoutput\somecsv.csv' -Append
}
}
else
{
write-host "****NO FILES WERE MODIFIED IN THE LAST 6 MONTHS****"
}
我会建议这样的事情,但我不太确定这是否是你想要的
$files = @(get-childitem z:\directory\ -recurse | where {$_.lastwritetime -gt (get-date).AddDays(-182)})
if ($files.Count -gt 0)
{
$files | %
{
$_.FullName | Out-file 'c:\scriptoutput\somecsv.csv' -Append
}
}
else
{
write-host "****NO FILES WERE MODIFIED IN THE LAST 6 MONTHS****"
}
这似乎接近我想要做的事情,尽管它会显示一条消息:命令管道位置1处的cmdlet ForEach对象为以下参数提供值:这似乎接近我想要做的事情,尽管它会显示一条消息:命令管道位置1处的cmdlet ForEach对象提供以下参数的值: