PowerShell의 Get-ChildItem에서 파일 및 폴더를 제외하는 방법은 무엇입니까?

ilRobby

md5 검사로 robocopy를 실행하는 PowerShell 스크립트를 만들었습니다.

잘 작동하지만 일부 디렉토리 또는 파일을 제외하려고하면 robocopy가 제외를 처리하는 반면 해시를 비교하는 스크립트의 MD5 부분이 작동하지 않고 소스에 대상보다 많은 파일 / 해시가 있기 때문에 일부 오류를 반환합니다. .

아마도 여기와 인터넷에서 찾은 모든 방법을 시도해 보았습니다! 경로에서 dirs 및 / 또는 파일을 제외 할 수 없습니다!

아래는 내가 지금까지 한 일입니다. 이 모드에서는 md5-copy가 작동합니다 (예외 없음).

$Source = "F:\"

$IgnoreDir = @(
    $Source + '$RECYCLE.BIN'
    $Source + "System Volume Information"
    $Source + "VMs"
)   
$IgnoreFile = @(
    $Source + "SHDrive.vmdk"
    $Source + "SHDrive-flat.vmdk"
)
$Ignored = $IgnoreDir + $IgnoreFile

Robocopy :

Robocopy.exe /R:1 /W:0 $Source $Dest /E /V /TEE /XD $IgnoreDir /XF $IgnoreFile /LOG:$LogDir\RBCY_MD5_F.txt

MD5 :

$SourceHash = Get-ChildItem "$Source\*.*" -Recurse -Force -Exclude $Ignored | Where-Object {!$_.psiscontainer } | Get-FileHash
$SourceHash | Select-Object "Hash", "path" | ft -HideTableHeaders -AutoSize | Out-File -Width "300" $LogDir\SRC_MD5_REF.txt
$SourceHash.Hash | Out-File $LogDir\SRC_MD5.txt 

비교 :

$Diff = Compare-Object -ReferenceObject $(get-content "$LogDir\SRC_MD5.txt") -DifferenceObject $(get-content "$LogDir\DST_MD5.txt")

F : \ 드라이브의 내용 :

PS C:\Users\Robbi> Get-ChildItem F:\ -force


    Directory: F:\


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d--hs-       19/03/2019     06:40                $RECYCLE.BIN
d-----       16/05/2020     04:41                DATA
d-----       19/01/2020     06:34                Drivers
d-----       16/05/2020     04:55                Gumball
d-----       16/05/2020     04:58                SW
d--hs-       19/03/2019     06:36                System Volume Information
d-----       13/03/2020     16:08                Tools
d-----       12/12/2019     00:02                VMs
d-----       16/05/2020     04:55                _Pre-Cestino
-a----       08/02/2020     03:02    21474836480 SHDrive-flat.vmdk
-a----       08/02/2020     03:02            466 SHDrive.vmdk

get-children 목록에서 복사하지 않으려는 데이터를 제외하려면 어떻게해야합니까? 이 특정 경우 및 가능한 경우 Get-ChildItem이 전체 파일 시스템에서 명시 적 콘텐츠 목록 (가변 문자열 및 / 또는 배열)을 제외해야하는 "모든 경우".

mklement0

PowerShell 7.0부터 -Exclude-Include같은 cmdlet 공급자 매개 변수는 전체 경로가 아닌 Get-ChildItem항목 이름 (파일 시스템 공급자의 경우 파일 / 디렉터리 이름) 에서만 작동 합니다 .

제외하려는 모든 경로가 대상 디렉토리의 직계 자식 이라는 점을 감안할 때 2 단계 접근 방식을 제안합니다.

# Get all files and directories in $Source, except those to be excluded.
# Note the use of \* instead of \*.*, so as to also include the
# directories (whose names don't have an extension).
$items = Get-Item $Source\* -Force | Where-Object FullName -NotIn $Ignored

# Recursively process all resulting files and directories and
# calculate their hashes.
# Note the use of -File to limit output to files.
$SourceHash = $items | Get-ChildItem -Recurse -Force -File | Get-FileHash

물론 $Ignored파일 / 디렉토리 이름으로배열 을 정의하는 경우 다음을 사용할 있습니다 -Exclude.

# Convert the ignore list to file/directory names only.
$Ignored = $Ignored | Split-Path -Leaf

$SourceHash = Get-ChildItem -File $Source -Recurse -Force -Exclude $Ignored |
                Get-FileHash

제외 할 경로가 하위 디렉토리 계층의 모든 수준에서 발생할 수있는 경우 추가 작업이 필요합니다.

$ignoredRegex = '^(?:{0})(?:\{1}|$)' -f
                  ($Ignored.ForEach({ [regex]::Escape($_) }) -join '|'),
                  [IO.Path]::DirectorySeparatorChar


$SourceHash = Get-ChildItem $Source -Recurse -File -Force |
                Where-Object FullName -NotMatch $ignoredRegex
                  Get-FileHash

위는 연산자 와 함께 정규식을 사용 하여 하위 디렉토리 트리의 -match모든 지정된 경로 와 해당 하위 를 제외합니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

OSX의 Avast : 숨김 파일 및 폴더를 예외로 추가하는 방법은 무엇입니까?

분류에서Dev

OSX의 Avast : 숨김 파일 및 폴더를 예외로 추가하는 방법은 무엇입니까?

분류에서Dev

LightTable의 검색 창에서 하위 폴더와 파일을 제외하는 방법은 무엇입니까?

분류에서Dev

폴더의 비디오 및 그림 파일에서 미리보기 이미지를 제거하는 방법은 무엇입니까?

분류에서Dev

폴더의 비디오 및 그림 파일에서 미리보기 이미지를 제거하는 방법은 무엇입니까?

분류에서Dev

다른 폴더에서 같은 이름의 파일 2 개를 삭제하는 방법은 무엇입니까?

분류에서Dev

외부 저장소의 폴더에있는 파일 수를 계산하는 방법은 무엇입니까?

분류에서Dev

폴더의 파일 이름에서 문자를 제거하는 방법은 무엇입니까?

분류에서Dev

돌고래에서 숨겨진 파일 및 폴더를 검색하는 방법은 무엇입니까?

분류에서Dev

손상된 하드 디스크의 파일 및 폴더에 액세스하는 방법은 무엇입니까?

분류에서Dev

인덱싱에서 일부 파일 및 확장자를 제외하는 방법은 무엇입니까?

분류에서Dev

PHP의 CSV 파일에서 열 헤더를 제외하는 방법은 무엇입니까?

분류에서Dev

Laravel 6의 폴더 및 데이터베이스에서 일주일 후 파일을 삭제하는 방법은 무엇입니까?

분류에서Dev

다른 폴더의 파일에서 파이썬 클래스를 가져 오는 방법은 무엇입니까?

분류에서Dev

PlayFramework 2.3.1에서 컴파일 된 자산의 대상 폴더를 변경하는 방법은 무엇입니까?

분류에서Dev

폴더 및 하위 폴더의 파일 만 재귀 적으로 복사하는 방법은 무엇입니까?

분류에서Dev

노틸러스 휴지통 및 다운로드 폴더에서 "파일보다 먼저 폴더를 나열"하지 않는 방법은 무엇입니까?

분류에서Dev

배치 파일을 사용하여 백업 폴더의 새 폴더에 기존 하위 폴더를 복사하는 방법은 무엇입니까?

분류에서Dev

파일의 문자열에서 폴더를 만드는 방법은 무엇입니까?

분류에서Dev

임의의 폴더 아래에 파일 크기를 나열하는 방법은 무엇입니까?

분류에서Dev

한 폴더에있는 csv 파일의 빈 범위를 계산하는 방법은 무엇입니까?

분류에서Dev

Powershell에서 현재 폴더를 제거하는 방법은 무엇입니까?

분류에서Dev

C #에서 Filewatcher를 사용할 때 일부 폴더를 제외하는 방법은 무엇입니까?

분류에서Dev

separe 폴더 및 파일에 폴더 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

Ubuntu의 파일 관리자 (Nautilus)에 숨겨진 폴더를 표시하는 방법은 무엇입니까?

분류에서Dev

파일 이름 앞의 경로에 폴더를 추가하는 방법은 무엇입니까?

분류에서Dev

폴더의 모든 파일에 'awk'를 적용하는 방법은 무엇입니까?

분류에서Dev

PowerShell 및 robocopy를 사용하여 파일을 서버에 백업하는 방법은 무엇입니까?

분류에서Dev

Octopress에서 블로그 폴더 및 목록 아카이브 파일과 유사한 폴더를 만드는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    OSX의 Avast : 숨김 파일 및 폴더를 예외로 추가하는 방법은 무엇입니까?

  2. 2

    OSX의 Avast : 숨김 파일 및 폴더를 예외로 추가하는 방법은 무엇입니까?

  3. 3

    LightTable의 검색 창에서 하위 폴더와 파일을 제외하는 방법은 무엇입니까?

  4. 4

    폴더의 비디오 및 그림 파일에서 미리보기 이미지를 제거하는 방법은 무엇입니까?

  5. 5

    폴더의 비디오 및 그림 파일에서 미리보기 이미지를 제거하는 방법은 무엇입니까?

  6. 6

    다른 폴더에서 같은 이름의 파일 2 개를 삭제하는 방법은 무엇입니까?

  7. 7

    외부 저장소의 폴더에있는 파일 수를 계산하는 방법은 무엇입니까?

  8. 8

    폴더의 파일 이름에서 문자를 제거하는 방법은 무엇입니까?

  9. 9

    돌고래에서 숨겨진 파일 및 폴더를 검색하는 방법은 무엇입니까?

  10. 10

    손상된 하드 디스크의 파일 및 폴더에 액세스하는 방법은 무엇입니까?

  11. 11

    인덱싱에서 일부 파일 및 확장자를 제외하는 방법은 무엇입니까?

  12. 12

    PHP의 CSV 파일에서 열 헤더를 제외하는 방법은 무엇입니까?

  13. 13

    Laravel 6의 폴더 및 데이터베이스에서 일주일 후 파일을 삭제하는 방법은 무엇입니까?

  14. 14

    다른 폴더의 파일에서 파이썬 클래스를 가져 오는 방법은 무엇입니까?

  15. 15

    PlayFramework 2.3.1에서 컴파일 된 자산의 대상 폴더를 변경하는 방법은 무엇입니까?

  16. 16

    폴더 및 하위 폴더의 파일 만 재귀 적으로 복사하는 방법은 무엇입니까?

  17. 17

    노틸러스 휴지통 및 다운로드 폴더에서 "파일보다 먼저 폴더를 나열"하지 않는 방법은 무엇입니까?

  18. 18

    배치 파일을 사용하여 백업 폴더의 새 폴더에 기존 하위 폴더를 복사하는 방법은 무엇입니까?

  19. 19

    파일의 문자열에서 폴더를 만드는 방법은 무엇입니까?

  20. 20

    임의의 폴더 아래에 파일 크기를 나열하는 방법은 무엇입니까?

  21. 21

    한 폴더에있는 csv 파일의 빈 범위를 계산하는 방법은 무엇입니까?

  22. 22

    Powershell에서 현재 폴더를 제거하는 방법은 무엇입니까?

  23. 23

    C #에서 Filewatcher를 사용할 때 일부 폴더를 제외하는 방법은 무엇입니까?

  24. 24

    separe 폴더 및 파일에 폴더 권한을 부여하는 방법은 무엇입니까?

  25. 25

    Ubuntu의 파일 관리자 (Nautilus)에 숨겨진 폴더를 표시하는 방법은 무엇입니까?

  26. 26

    파일 이름 앞의 경로에 폴더를 추가하는 방법은 무엇입니까?

  27. 27

    폴더의 모든 파일에 'awk'를 적용하는 방법은 무엇입니까?

  28. 28

    PowerShell 및 robocopy를 사용하여 파일을 서버에 백업하는 방법은 무엇입니까?

  29. 29

    Octopress에서 블로그 폴더 및 목록 아카이브 파일과 유사한 폴더를 만드는 방법은 무엇입니까?

뜨겁다태그

보관