【发布时间】:2014-09-01 04:56:37
【问题描述】:
PS H:\> Invoke-Command -computername SERVERNAME { Get-ChildItem -path E:\dfsroots\datastore2\public} | Where-Object {{ $_.e
xtension-match "xls" -or $_.extension-match "xlk" } -and { $_.creationtime -ge "06/01/2014"}}
以上是我的代码示例。我正在尝试在我的文件服务器上远程运行此 PowerShell 代码,并让它返回创建日期为 2014 年 6 月 1 日或之后的所有 .xls 和 .xlk 文件。当我运行此代码时,它开始吐出该远程位置的所有文件夹。如果我只比较这样的两件事:
PS H:\> Invoke-Command -computername SERVERNAME { Get-ChildItem -path E:\dfsroots\datastore2\public} | Where-Object { $_.extension-match "xls" -and $_.creationtime -ge "06/01/2014"}
仅显示在该日期或之后创建的 xls 文件。这里发生了什么?除了嵌套 -and 和 -or 语句之外,我还需要使用其他东西吗?
【问题讨论】:
-
请注意,将命令分解为多个“where”语句也不起作用。我会输入如下命令: PS H:\> Invoke-Command -computername SERVERNAME { Get-ChildItem -path E:\dfsroots\datastore2\public} | Where-Object { $_.extension-match "xls" - 或 $_.extension-match "xlk" } | where-object { $_.creationtime -ge "06/01/2014"} 它开始吐出 xlsx 文件,这不是我想要的。
-
使用圆括号而不是大括号来包围选项,所以
Where{($_.Extension -Match "xls" -or $_.Extension -Match "xlk") -and $_.CreationTime -ge "06/01/2014"} -
@TheMadTechnician 如果你能帮我一分钟,我不知道什么 mini-Markdown 格式有效,什么无效。您是如何将其包含在“代码”块中的?
-
@TheMadTechnician 即使使用括号,结果仍然会输出 xlsx 文件。
-
@WinskiTech 回复:Markdown。单击注释框旁边的帮助链接以获取格式化帮助。用反引号包围代码
`。
标签: powershell windows-7 windows-server-2008 windows-server-2003