PowerShell에서 복사 항목 액세스가 거부됨: 테스트된 8가지 수정 사항
PowerShell에서 Copy-Item Access is Denied 오류가 발생하는 것은 당황스러운 일입니다. 파일 탐색기에서 문제 없이 프로세스를 수행할 수 있기 때문입니다. 이는 네트워크 공유에 쓸 때 NTFS 권한이 없기 때문이지만 아래 솔루션을 사용하면 즉시 문제가 해결됩니다.
PowerShell에서 Copy-Item Access is Denied 오류를 해결하려면 어떻게 해야 하나요?
1. 올바른 NTFS 권한을 확인하세요
- Win+를 눌러 파일 탐색기를E 시작하세요 .
- 수정하려는 폴더로 이동합니다.
- 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다 .
- 보안 탭을 클릭합니다 .
- 권한을 변경하려면 ‘ 편집’ 버튼을 클릭하세요 .
- 사용자 계정이나 PowerShell 스크립트를 실행하는 계정에 모든 권한이 있는지 확인하세요.
- 적용을 클릭 한 다음 확인을 클릭하여 변경 사항을 저장합니다.
적절한 NTFS 권한을 보장하면 스크립트가 폴더에 쓸 수 있어 액세스 문제가 해결됩니다.
2. 공유 권한 확인
- Win+를 눌러 실행 대화 상자를 열고 Rfsmgmt.msc를 입력한 후 를 누릅니다 Enter.
- 공유 폴더로 이동합니다.
- 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다 .
- 공유 권한 탭을 클릭하세요 .
- PowerShell 스크립트를 실행하는 사용자 또는 그룹에 모든 권한이 있는지 확인하세요.
- 적용을 클릭 한 다음 확인을 클릭합니다.
성공적인 파일 복사를 위해서는 NTFS와 공유 권한 모두에서 쓰기 액세스를 허용해야 합니다.
3. PowerShell을 관리자 권한으로 실행
- 시작 버튼 을 클릭하세요 .
- 검색 창에 PowerShell을 입력합니다.
- Windows PowerShell을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택합니다 .
- Copy-Item 스크립트를 다시 실행하세요.
PowerShell을 관리자 권한으로 실행하면 보호된 시스템 폴더와 네트워크 공유에 대한 전체 액세스가 보장됩니다.
4. 자격 증명 없이 UNC 경로 사용
- New-PSDrive를 사용하여 네트워크 위치에 대한 새 PowerShell 드라이브를 만듭니다.
New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
- 새 드라이브 문자를 사용하여 Copy-Item을 실행합니다(소스 및 대상 경로를 이에 따라 변경합니다):
Copy-Item "P:\source\file"-Destination "P:\destination\path"
UNC 경로를 사용하고 네트워크 드라이브를 매핑하면 네트워크 경로와 관련된 자격 증명 관련 문제를 방지하는 데 도움이 됩니다.
5. PowerShell에서 환경 변수 수정
- 환경 변수를 PowerShell 구문으로 바꾸세요:
Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
- 또는 APPDATA 환경 변수를 직접 사용하세요.
Copy-Item -Path "E:\FolderA"-Destination "$($env:APPDATA)\FolderB"-Recurse -Force
PowerShell에서 환경 변수를 올바르게 참조하면 경로가 올바르게 확인됩니다.
6. PowerShell Remoting 활성화
- 원격 컴퓨터에서 다음을 실행합니다.
Enable-PSRemoting -Force
- 사용자가 원격 컴퓨터에서 스크립트를 실행할 수 있는 권한이 있는지 확인하세요.
Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
- 원격 복사에는 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) 문제 해결
- 권한을 높이기 위한 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 }
- 상승된 세션 내에서 Copy-Item 명령을 실행합니다.
Copy-Item "C:\source\file"-Destination "C:\Program Files (x86)\target\folder"-Force
스크립트 내에서 권한을 높이면 UAC 제한을 우회할 수 있습니다.
8. Double Hop 문제 처리
- 필요한 파일을 원격 컴퓨터에 미리 복사하세요.
Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
- 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 오류를 해결할 수 있습니다.
제안이나 질문이 있으시면 아래의 댓글 섹션을 눌러 적어주세요.
답글 남기기