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
- Naciśnij Win+ E, aby uruchomić Eksplorator plików .
- Przejdź do folderu, który chcesz zmodyfikować.
- Kliknij prawym przyciskiem myszy na folderze i wybierz Właściwości .
- Kliknij kartę Bezpieczeństwo .
- Kliknij przycisk Edytuj , aby zmienić uprawnienia.
- Upewnij się, że Twoje konto użytkownika lub konto uruchamiające skrypt programu PowerShell ma uprawnienia pełnej kontroli.
- 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
- Otwórz okno dialogowe Uruchom, naciskając klawisz Win+ R, wpisz fsmgmt.msc i naciśnij klawisz Enter.
- Przejdź do folderu udostępnionego.
- Kliknij prawym przyciskiem myszy na folderze i wybierz Właściwości .
- Kliknij kartę Uprawnienia udostępniania .
- Upewnij się, że użytkownik lub grupa uruchamiająca skrypt programu PowerShell ma uprawnienia pełnej kontroli.
- 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
- Kliknij przycisk Start .
- Wpisz PowerShell w pasku wyszukiwania.
- Kliknij prawym przyciskiem myszy program Windows PowerShell i wybierz opcję Uruchom jako administrator .
- 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ń
- Utwórz nowy dysk PowerShell dla lokalizacji sieciowej za pomocą polecenia New-PSDrive:
New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
- 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
- Zastąp zmienne środowiskowe składnią programu PowerShell:
Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
- 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
- Na komputerze zdalnym uruchom:
Enable-PSRemoting -Force
- Upewnij się, że użytkownik ma uprawnienia do uruchamiania skryptów na komputerze zdalnym:
Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
- 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)
- 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 }
- 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
- Wcześniej skopiuj niezbędne pliki na komputer zdalny:
Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
- 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