Powershell 3.0:搜索特定文件名并将其发送到.txt文件

Powershell 3.0:搜索特定文件名并将其发送到.txt文件,powershell,Powershell,这是我的密码: Get-ChildItem 'R:\Source\Path' | ForEach-Object { $_.Name -notlike '*condition*' } > 'R:\Destination\Path\File.txt' 代码在某种程度上起作用。除了将文件名复制到目标之外,它还根据条件的状态将true或false写入文本文件。因此,我希望有一个.txt文件名列表,而我有如下内容: True True False True False False ……等等 我做

这是我的密码:

Get-ChildItem 'R:\Source\Path' |
ForEach-Object { $_.Name -notlike '*condition*' } > 'R:\Destination\Path\File.txt'
代码在某种程度上起作用。除了将文件名复制到目标之外,它还根据条件的状态将true或false写入文本文件。因此,我希望有一个.txt文件名列表,而我有如下内容:

True
True
False
True
False
False
……等等


我做错了什么?

要过滤输出,请使用
Where Object
而不是
ForEach Object

Get-ChildItem |Where-Object {$_.Name -notlike "*.zip"} > output.txt
要获取文件的完整路径而不获取其他内容,请使用
选择对象-ExpandProperty

Get-ChildItem |Where-Object {$_.Name -notlike "*.zip"} |Select-Object -ExpandProperty FullName > output.txt
或者更改原始ForEach对象脚本块中的逻辑,以实际作用于
-notlike
的结果:

Get-ChildItem |ForEach-Object {
    if($_.Name -notlike "*.zip"){
        $_.FullName
    }
} > output.txt

您正在将命令的输出重定向到文件
$\uU4.Name-notlike'*condition*'
返回一个布尔值,这就是为什么您可以看到您所做的事情。将它改为where对象,而不是foreach对象在我发布了这个问题后,我用where对象测试了它,它成功了!非常感谢你的回复,不过,我真的很感激!我对powershell很陌生,如果这是个愚蠢的问题,我很抱歉,但是.Name和.FullName之间有什么区别?@GalenH文件名和完整文件路径。@GalenH
Get ChildItem
返回类型为
FileInfo
DirectoryInfo
的对象-它们都有
Name
FullName
属性
Name
是文件/目录的名称-
FullName
是文件/目录的完整文件系统路径哦,好吧,太酷了!最后一个问题,当我运行Where对象代码时,我得到了一个包含模式、上次写入时间、长度和名称的文本文件。我是否可以实现另一个只传递名称信息的过滤器?@GalenH已经显示,使用
选择对象-ExpandProperty
。如果要避免额外的间距,请使用
|Out File
而不是