这是我的代码:
Get-ChildItem 'R:\Source\Path' |
ForEach-Object { $_.Name -notlike '*condition*' } > 'R:\Destination\Path\File.txt'
代码在某种程度上有效。除了将文件的名称复制到目标之外,它取而代之的是根据条件的状态将true或false写入文本文件。所以我期望一个.txt文件列表的名称,而是我有一些看起来像:
True
True
False
True
False
False
......等等......
我做错了什么?
答案 0 :(得分:2)
要过滤您的输出,请使用Where-Object
代替ForEach-Object
:
Get-ChildItem |Where-Object {$_.Name -notlike "*.zip"} > output.txt
要获取文件的完整路径,请使用Select-Object -ExpandProperty
:
Get-ChildItem |Where-Object {$_.Name -notlike "*.zip"} |Select-Object -ExpandProperty FullName > output.txt
或将原始ForEach-Object scriptblock中的逻辑更改为-notlike
Get-ChildItem |ForEach-Object {
if($_.Name -notlike "*.zip"){
$_.FullName
}
} > output.txt