File 如果为true,则将lastwritetime输出到文件,如果为false,则在屏幕上打印文本

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\ 这似乎工作得很好,但

|我拼凑了一个小脚本,在屏幕上显示正在处理的文件,让管理员知道脚本正在工作,然后将过去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\
这似乎工作得很好,但我想调整它来,使之 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对象提供以下参数的值: