PowerShell에서 복사 항목 액세스가 거부됨: 테스트된 8가지 수정 사항

PowerShell에서 복사 항목 액세스가 거부됨: 테스트된 8가지 수정 사항

PowerShell에서 Copy-Item Access is Denied 오류가 발생하는 것은 당황스러운 일입니다. 파일 탐색기에서 문제 없이 프로세스를 수행할 수 있기 때문입니다. 이는 네트워크 공유에 쓸 때 NTFS 권한이 없기 때문이지만 아래 솔루션을 사용하면 즉시 문제가 해결됩니다.

PowerShell에서 Copy-Item Access is Denied 오류를 해결하려면 어떻게 해야 하나요?

1. 올바른 NTFS 권한을 확인하세요

  1. Win+를 눌러 파일 탐색기를E 시작하세요 .
  2. 수정하려는 폴더로 이동합니다.
  3. 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다 .
  4. 보안 탭을 클릭합니다 .
  5. 권한을 변경하려면 ‘ 편집’ 버튼을 클릭하세요 .
  6. 사용자 계정이나 PowerShell 스크립트를 실행하는 계정에 모든 권한이 있는지 확인하세요.
  7. 적용을 클릭 한 다음 확인을 클릭하여 변경 사항을 저장합니다.

적절한 NTFS 권한을 보장하면 스크립트가 폴더에 쓸 수 있어 액세스 문제가 해결됩니다.

2. 공유 권한 확인

  1. Win+를 눌러 실행 대화 상자를 열고 Rfsmgmt.msc를 입력한 후 를 누릅니다 Enter.
  2. 공유 폴더로 이동합니다.
  3. 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다 .
  4. 공유 권한 탭을 클릭하세요 .
  5. PowerShell 스크립트를 실행하는 사용자 또는 그룹에 모든 권한이 있는지 확인하세요.
  6. 적용을 클릭 한 다음 확인을 클릭합니다.

성공적인 파일 복사를 위해서는 NTFS와 공유 권한 모두에서 쓰기 액세스를 허용해야 합니다.

3. PowerShell을 관리자 권한으로 실행

  1. 시작 버튼 을 클릭하세요 .
  2. 검색 창에 PowerShell을 입력합니다.
  3. Windows PowerShell을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택합니다 .
  4. Copy-Item 스크립트를 다시 실행하세요.

PowerShell을 관리자 권한으로 실행하면 보호된 시스템 폴더와 네트워크 공유에 대한 전체 액세스가 보장됩니다.

4. 자격 증명 없이 UNC 경로 사용

  1. New-PSDrive를 사용하여 네트워크 위치에 대한 새 PowerShell 드라이브를 만듭니다.New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
  2. 새 드라이브 문자를 사용하여 Copy-Item을 실행합니다(소스 및 대상 경로를 이에 따라 변경합니다):Copy-Item "P:\source\file"-Destination "P:\destination\path"

UNC 경로를 사용하고 네트워크 드라이브를 매핑하면 네트워크 경로와 관련된 자격 증명 관련 문제를 방지하는 데 도움이 됩니다.

5. PowerShell에서 환경 변수 수정

  1. 환경 변수를 PowerShell 구문으로 바꾸세요:Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
  2. 또는 APPDATA 환경 변수를 직접 사용하세요.Copy-Item -Path "E:\FolderA"-Destination "$($env:APPDATA)\FolderB"-Recurse -Force

PowerShell에서 환경 변수를 올바르게 참조하면 경로가 올바르게 확인됩니다.

6. PowerShell Remoting 활성화

  1. 원격 컴퓨터에서 다음을 실행합니다.Enable-PSRemoting -Force
  2. 사용자가 원격 컴퓨터에서 스크립트를 실행할 수 있는 권한이 있는지 확인하세요.Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
  3. 원격 복사에는 ToSession 매개변수를 사용하세요.$session = New-PSSession -ComputerName "remote_machine"-Credential "username"$source = "C:\path\to\source"$dest = "C:\path\to\destination"Copy-Item -Path $source -Destination $dest -ToSession $session -Recurse -Force

PowerShell 원격 기능을 활성화하고 올바른 세션 매개변수를 사용하면 원격 파일 작업이 더 원활해집니다.

7. 사용자 계정 컨트롤(UAC) 문제 해결

  1. 권한을 높이기 위한 PowerShell 스크립트를 만듭니다.If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell -Verb runAs -ArgumentList $MyInvocation.MyCommand.Definition Break }
  2. 상승된 세션 내에서 Copy-Item 명령을 실행합니다.Copy-Item "C:\source\file"-Destination "C:\Program Files (x86)\target\folder"-Force

스크립트 내에서 권한을 높이면 UAC 제한을 우회할 수 있습니다.

8. Double Hop 문제 처리

  1. 필요한 파일을 원격 컴퓨터에 미리 복사하세요.Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
  2. Invoke-Command를 사용하여 원격 컴퓨터에서 설치를 실행하세요.Invoke-Command -ComputerName "remote_machine"-ScriptBlock { Copy-Item -Path "\\remote_machine\path\file"-Destination "C:\Windows\Temp"-Force Start-Process msiexec -ArgumentList "/i C:\Windows\Temp\installer.msi /quiet"-Wait }

파일을 미리 복사하고 직접 경로를 사용하면 여러 원격 연결과 관련된 문제를 방지할 수 있습니다.

이러한 솔루션을 따르면 PowerShell에서 Copy-Item: Access is denied 오류를 해결할 수 있습니다.

제안이나 질문이 있으시면 아래의 댓글 섹션을 눌러 적어주세요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다