获取字符串中具有特定日期的文件的 Powershell 脚本
Powershell Script to Get Files with Certain Date in String
我正在构建一个 powershell 脚本以仅抓取字符串中具有特定日期(昨天的日期)的文件并显示它们的名称。但它似乎并不顺利。我试过谷歌搜索,但没有找到关于我正在尝试做的事情的具体帮助:
$a = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
$b = Get-ChildItem "E:\Export" -Filter {$_.Name -like '*'+$a.ToString()}
Get-ChildItem "E:\Export" -Filter *.txt |
Foreach-Object {
If ($b -like $a)
{
Write-Host $b
}
}
如有任何帮助,我们将不胜感激。
$a
IS 已经是一个字符串。您不能简单地将脚本块作为过滤器。
$a = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
$b = Get-ChildItem "E:\Export" | Where-Object BaseName -like "*$a*"
$b
或
$b = Get-ChildItem "E:\Export\*$a*"
td;dr
$b = Get-ChildItem "E:\Export" -Filter ('*' + $a)
或者,使用 PowerShell 的字符串扩展(插值):
$b = Get-ChildItem "E:\Export" -Filter "*$a"
-Filter
参数值:
是总是[string]
类型
它们的特定语法 供应商依赖
由于您处理的是 文件,因此 FileSystem
PS 提供程序会解释 -Filter
,并且它需要一个 通配符表达式作为参数,被基础WindowsAPI接受;通配符表达式与文件 name.
隐式匹配
注:
通常 - 例如在这种情况下 - 这样的通配符表达式与 PowerShell's own wildcard expressions 的工作方式相同,但前者有怪癖以支持遗留应用程序,而后者提供额外的功能。
没有标准提供程序接受 脚本块 将 任意 PowerShell 代码 作为 -Filter
参数,尽管它们与 Active Directory 提供程序的广泛使用 - 但被误导 - 请参阅 this answer.
要通过脚本块在 PowerShell 代码 中对输出对象执行任意过滤,请通过管道连接到 Where-Object
cmdlet,如 所示。
但是,如果可行,-Filter
的使用应始终是首选,因为它在源头 进行过滤,这意味着提供者 returns 将已经过滤的结果发送给 PowerShell(而不是在 PowerShell 代码中事后过滤结果),这 可以大大加快操作速度.
我正在构建一个 powershell 脚本以仅抓取字符串中具有特定日期(昨天的日期)的文件并显示它们的名称。但它似乎并不顺利。我试过谷歌搜索,但没有找到关于我正在尝试做的事情的具体帮助:
$a = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
$b = Get-ChildItem "E:\Export" -Filter {$_.Name -like '*'+$a.ToString()}
Get-ChildItem "E:\Export" -Filter *.txt |
Foreach-Object {
If ($b -like $a)
{
Write-Host $b
}
}
如有任何帮助,我们将不胜感激。
$a
IS 已经是一个字符串。您不能简单地将脚本块作为过滤器。
$a = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
$b = Get-ChildItem "E:\Export" | Where-Object BaseName -like "*$a*"
$b
或
$b = Get-ChildItem "E:\Export\*$a*"
td;dr
$b = Get-ChildItem "E:\Export" -Filter ('*' + $a)
或者,使用 PowerShell 的字符串扩展(插值):
$b = Get-ChildItem "E:\Export" -Filter "*$a"
-Filter
参数值:
是总是
[string]
类型它们的特定语法 供应商依赖
由于您处理的是 文件,因此 FileSystem
PS 提供程序会解释 -Filter
,并且它需要一个 通配符表达式作为参数,被基础WindowsAPI接受;通配符表达式与文件 name.
注:
通常 - 例如在这种情况下 - 这样的通配符表达式与 PowerShell's own wildcard expressions 的工作方式相同,但前者有怪癖以支持遗留应用程序,而后者提供额外的功能。
没有标准提供程序接受 脚本块 将 任意 PowerShell 代码 作为
-Filter
参数,尽管它们与 Active Directory 提供程序的广泛使用 - 但被误导 - 请参阅 this answer.
要通过脚本块在 PowerShell 代码 中对输出对象执行任意过滤,请通过管道连接到 Where-Object
cmdlet,如
但是,如果可行,-Filter
的使用应始终是首选,因为它在源头 进行过滤,这意味着提供者 returns 将已经过滤的结果发送给 PowerShell(而不是在 PowerShell 代码中事后过滤结果),这 可以大大加快操作速度.