programing

powershell Get-ChildItem 여러 개 주어진 -Filters

i4 2023. 9. 8. 21:09
반응형

powershell Get-ChildItem 여러 개 주어진 -Filters

다음에 대한 구문이 있습니까?-Filter의 소유물.Get-ChildItem여러 개의 필터를 동시에 적용할 수 있도록 허용하시겠습니까? 즉, 아래와 같이 와일드카드를 사용하여 몇 가지 다른 특정 이름의 .dll을 찾고자 합니다.

Get-ChildItem -Path $myPath -Filter "MyProject.Data*.dll", "EntityFramework*.dll"

아니면 Get-ChildItem 호출을 여러 개로 나누어 수행해야 합니까? 이 결과에 대한 파이프링을 하려고 합니다.

-Filter매개 변수 인Get-ChildItem는 단일 문자열/조건 AFAIK만 지원합니다.다음은 문제를 해결하는 두 가지 방법입니다.

사용할 수 있습니다.-Include일치할 여러 문자열을 허용하는 매개 변수입니다.이것은 보다 느립니다.-Filter왜냐하면 그것은 cmdlet에서 검색을 하기 때문입니다.-Filter는 제공 수준(cmdlet이 결과를 받아 처리할 수 있도록 하기 전에)에서 수행됩니다.하지만 쓰기도 쉽고 작업하기도 쉽습니다.

#You have to specify a path to make -Include available, use .\* 
Get-ChildItem .\* -Include "MyProject.Data*.dll", "EntityFramework*.dll"

사용할 수도 있습니다.-Filter모든 DLL을 가져온 다음 where-statement에서 원하는 DLL을 필터링합니다.

Get-ChildItem -Filter "*.dll" .\* | Where-Object { $_.Name -match '^MyProject.Data.*|^EntityFramework.*' }

필터 결과를 다음과 같은 파이프에 결합할 수 있습니다.

@("MyProject.Data*.dll", "EntityFramework*.dll") | %{ Get-ChildItem -File $myPath -Filter $_ }

하나의 값만 사용할 수 있습니다.-Filter,반면에.-Include는 ".csv, *.exe"와 같이 여러 값을 허용할 수 있습니다.

둘 다 사용할 수 있습니다.-Filter그리고.-Include동시에

Get-ChildItem -Path $myPath -Filter "*.dll" -Include "MyProject.Data*.dll", "EntityFramework*.dll"

언급URL : https://stackoverflow.com/questions/30150930/powershell-get-childitem-given-multiple-filters

반응형