2013-07-30 6 views

ответ

8

Я не уверен, если это может быть сделано без foreach-object, но это работает:

gci |foreach-object{if (-not (select-string -inputobject $_ -Pattern "something")){$_}} 
+0

Я хотел бы также использовать переключатель '-List', то есть' Select-String, ... -List' для того, чтобы сделать это более эффективно, по-видимому, потому, что мы не нужны все найденные совпадения. –

+0

И еще одна вещь. Этот код также возвращает каталоги. Чтобы этого избежать, я бы использовал 'gci-File' (по крайней мере, в PowerShell V3). –

+4

'Where-Object' может сделать его еще проще. 'gci -File | Where-Object {! (Select-String -InputObject $ _ -Pattern "something" -List)} ' –

14

Вы можете использовать Where-Object;

gci | Where-Object { !($_ | Select-String "something" -quiet) } 
Смежные вопросы