Dostęp do kopiowania elementów jest zabroniony w programie PowerShell: 8 przetestowanych poprawek

Dostęp do kopiowania elementów jest zabroniony w programie PowerShell: 8 przetestowanych poprawek

Natrafienie na błąd Copy-Item Access is Denied w PowerShell jest zagadkowe, ponieważ możesz wykonać proces w Eksploratorze plików bez problemu. Jest to spowodowane brakiem uprawnień NTFS podczas zapisu do udziału sieciowego, ale poniższe rozwiązania rozwiążą problem w mgnieniu oka.

Jak naprawić błąd „Dostęp do kopiowania elementu jest zabroniony” w programie PowerShell?

1. Upewnij się, że uprawnienia NTFS są prawidłowe

  1. Naciśnij Win+ E, aby uruchomić Eksplorator plików .
  2. Przejdź do folderu, który chcesz zmodyfikować.
  3. Kliknij prawym przyciskiem myszy na folderze i wybierz Właściwości .
  4. Kliknij kartę Bezpieczeństwo .
  5. Kliknij przycisk Edytuj , aby zmienić uprawnienia.
  6. Upewnij się, że Twoje konto użytkownika lub konto uruchamiające skrypt programu PowerShell ma uprawnienia pełnej kontroli.
  7. Kliknij Zastosuj , a następnie OK, aby zapisać zmiany.

Zapewnienie odpowiednich uprawnień NTFS pozwala skryptowi na zapis do folderu, co rozwiązuje problemy z dostępem.

2. Sprawdź uprawnienia udostępniania

  1. Otwórz okno dialogowe Uruchom, naciskając klawisz Win+ R, wpisz fsmgmt.msc i naciśnij klawisz Enter.
  2. Przejdź do folderu udostępnionego.
  3. Kliknij prawym przyciskiem myszy na folderze i wybierz Właściwości .
  4. Kliknij kartę Uprawnienia udostępniania .
  5. Upewnij się, że użytkownik lub grupa uruchamiająca skrypt programu PowerShell ma uprawnienia pełnej kontroli.
  6. Kliknij Zastosuj , a następnie OK.

Aby skopiowanie pliku powiodło się, uprawnienia NTFS i udziału muszą pozwalać na zapis.

3. Uruchom program PowerShell jako administrator

  1. Kliknij przycisk Start .
  2. Wpisz PowerShell w pasku wyszukiwania.
  3. Kliknij prawym przyciskiem myszy program Windows PowerShell i wybierz opcję Uruchom jako administrator .
  4. Uruchom ponownie skrypt Copy-Item.

Uruchomienie programu PowerShell jako administrator zapewnia pełny dostęp do chronionych folderów systemowych i udostępnionych zasobów sieciowych.

4. Używaj ścieżek UNC bez poświadczeń

  1. Utwórz nowy dysk PowerShell dla lokalizacji sieciowej za pomocą polecenia New-PSDrive:New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
  2. Użyj nowej litery dysku, aby wykonać polecenie Copy-Item (odpowiednio zmień ścieżkę źródłową i docelową):Copy-Item "P:\source\file"-Destination "P:\destination\path"

Używanie ścieżek UNC i mapowanie dysku sieciowego pomaga uniknąć problemów z poświadczeniami w przypadku ścieżek sieciowych.

5. Modyfikowanie zmiennych środowiskowych w programie PowerShell

  1. Zastąp zmienne środowiskowe składnią programu PowerShell:Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
  2. Można również bezpośrednio użyć zmiennej środowiskowej APPDATA:Copy-Item -Path "E:\FolderA"-Destination "$($env:APPDATA)\FolderB"-Recurse -Force

Prawidłowe odwoływanie się do zmiennych środowiskowych w programie PowerShell zapewnia prawidłowe rozwiązywanie ścieżek.

6. Włącz zdalne sterowanie programem PowerShell

  1. Na komputerze zdalnym uruchom:Enable-PSRemoting -Force
  2. Upewnij się, że użytkownik ma uprawnienia do uruchamiania skryptów na komputerze zdalnym:Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
  3. Użyj parametru ToSession do zdalnego kopiowania:$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

Włączenie obsługi zdalnej programu PowerShell i użycie prawidłowych parametrów sesji sprawia, że ​​zdalne operacje na plikach przebiegają sprawniej.

7. Rozwiązywanie problemów z kontrolą konta użytkownika (UAC)

  1. Utwórz skrypt programu PowerShell w celu podwyższenia uprawnień: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. Wykonaj polecenie Copy-Item w ramach podwyższonej sesji:Copy-Item "C:\source\file"-Destination "C:\Program Files (x86)\target\folder"-Force

Podniesienie uprawnień w skrypcie pozwala obejść ograniczenia UAC.

8. Rozwiąż problem podwójnego przeskoku

  1. Wcześniej skopiuj niezbędne pliki na komputer zdalny:Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
  2. Użyj polecenia Invoke-Command, aby uruchomić instalację na komputerze zdalnym: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 }

Wcześniejsze kopiowanie plików i korzystanie z bezpośrednich ścieżek zapobiega problemom związanym z wieloma połączeniami zdalnymi.

Postępując zgodnie z poniższymi rozwiązaniami, powinieneś być w stanie rozwiązać błąd Copy-Item: Access is denied w programie PowerShell.

Jeśli masz jakieś sugestie lub pytania, kliknij sekcję komentarzy poniżej i je zapisz.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *