2015-01-18 3 views
0

내 스크립트에서 나는 한 번만 실행합니다. $data = gci d:\ -recurse -force 파일 또는 폴더 보고서와 같은 다른 목적으로 출력을 사용하므로 Where-Object으로 주 Gci 명령을 필터링 할 수 없습니다. 이제 특정 테이블에 대해 함수 매개 변수를 통해 사용자가 지정한 디렉토리의 $ $ 데이터 출력에서 ​​파일을 검색해야합니다.특정 폴더의 파일 선택

$regexPath = [regex]::Escape($SpecificDirectory) 
$folders = $data | ? {$_.Attributes -eq "Directory" -and $_.FullName -match "^$regexPath"} 

하지만 난 특정 폴더에서 파일을 얻기 위해 내 $ 데이터 변수의 출력을 사용하는 방법에 대해 아무 생각이 : 여기 폴더에 사용하는 것. \ 임시 \의 VM 폴더 :

$ 데이터 = GCI의 D : 당신이 찾고 있지만, 다음은 D의 모든 파일을 제공 정확히 무엇인지

답변

1

폴더를 얻는 것과 같은 방법으로 파일을 가져 오며 개체 유형 (-eq "Directory"에서 -ne "Directory"까지)에 대한 검사를 반전시킵니다.

는 그래도 약간의 최적화를 권 해드립니다 다음 PSIsContainer 속성을 사용

  • filees 및 폴더를 구분하는 쉬운 방법입니다.
  • 패턴 일치 (연산자 -like)는 정규식 일치 (연산자 -match)보다 우수한 성능을 제공합니다. 이 같은

시도 뭔가 :

$data | ? {-not $_.PSIsContainer -and $_.FullName -like "$SpecificDirectory\*"} 

당신이 $SpecificDirectory의 파일 만 원하는 경우가 아닌 하위 디렉토리, 당신은이 같은 뭔가를 할 수 :

$data | ? {-not $_.PSIsContainer -and $_.DirectoryName -eq $SpecificDirectory} 
+0

대단히 감사합니다! – kekimian

1

하지 \ -recurse -force

$ data | Where : {$ _. DirectoryName- like "D : \ temp \ vm"}