Toegang tot kopie-item is geweigerd in PowerShell: 8 geteste oplossingen
Het is verbijsterend om de fout Copy-Item Access is Denied in PowerShell tegen te komen, omdat u het proces zonder problemen in File Explorer kunt uitvoeren. Dit komt door het ontbreken van NTFS-machtigingen bij het schrijven naar een netwerkshare, maar de onderstaande oplossingen lossen het probleem in een mum van tijd op.
Hoe los ik de fout Copy-Item Access is Denied in PowerShell op?
1. Zorg voor de juiste NTFS-machtigingen
- Druk op Win+ Eom Verkenner te starten .
- Navigeer naar de map die u wilt wijzigen.
- Klik met de rechtermuisknop op de map en selecteer Eigenschappen .
- Klik op het tabblad Beveiliging .
- Klik op de knop Bewerken om de machtigingen te wijzigen.
- Zorg ervoor dat uw gebruikersaccount of het account dat het PowerShell-script uitvoert, volledige beheermachtigingen heeft.
- Klik op Toepassen en vervolgens op OK om de wijzigingen op te slaan.
Door te zorgen voor de juiste NTFS-machtigingen kan het script naar de map schrijven, waardoor toegangsproblemen worden opgelost.
2. Controleer de Share-machtigingen
- Open het dialoogvenster Uitvoeren door op Win+ te drukken R, typ fsmgmt.msc en druk op Enter.
- Navigeer naar de gedeelde map.
- Klik met de rechtermuisknop op de map en selecteer Eigenschappen .
- Klik op het tabblad Share-machtigingen .
- Zorg ervoor dat de gebruiker of groep die het PowerShell-script uitvoert, volledige beheermachtigingen heeft.
- Klik op Toepassen en vervolgens op OK.
Zowel NTFS- als Share-machtigingen moeten schrijftoegang toestaan om bestanden succesvol te kunnen kopiëren.
3. Voer PowerShell uit als beheerder
- Klik op de Start- knop.
- Typ PowerShell in de zoekbalk.
- Klik met de rechtermuisknop op Windows PowerShell en selecteer Als administrator uitvoeren .
- Voer uw Copy-Item-script opnieuw uit.
Wanneer u PowerShell als beheerder uitvoert, hebt u volledige toegang tot beveiligde systeemmappen en netwerkshares.
4. Gebruik UNC-paden zonder referenties
- Maak een nieuw PowerShell-station voor de netwerklocatie met behulp van New-PSDrive:
New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
- Gebruik de nieuwe stationsletter om Copy-Item uit te voeren (wijzig de bron- en doelpaden dienovereenkomstig):
Copy-Item "P:\source\file"-Destination "P:\destination\path"
Door UNC-paden te gebruiken en een netwerkstation toe te wijzen, kunt u problemen met netwerkpaden met betrekking tot referenties voorkomen.
5. Omgevingsvariabelen in PowerShell wijzigen
- Vervang omgevingsvariabelen met PowerShell-syntaxis:
Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
- U kunt ook rechtstreeks de APPDATA-omgevingsvariabele gebruiken:
Copy-Item -Path "E:\FolderA"-Destination "$($env:APPDATA)\FolderB"-Recurse -Force
Door correct te verwijzen naar omgevingsvariabelen in PowerShell, wordt ervoor gezorgd dat paden correct worden omgezet.
6. PowerShell-op afstand inschakelen
- Voer op de externe computer het volgende uit:
Enable-PSRemoting -Force
- Zorg ervoor dat de gebruiker toestemming heeft om scripts op de externe computer uit te voeren:
Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
- Gebruik de parameter ToSession voor kopiëren op afstand:
$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
Door PowerShell Remoting in te schakelen en de juiste sessieparameters te gebruiken, verlopen externe bestandsbewerkingen soepeler.
7. Problemen met Gebruikersaccountbeheer (UAC) oplossen
- Maak een PowerShell-script om machtigingen te verhogen:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell -Verb runAs -ArgumentList $MyInvocation.MyCommand.Definition Break }
- Voer de opdracht Copy-Item uit binnen de verhoogde sessie:
Copy-Item "C:\source\file"-Destination "C:\Program Files (x86)\target\folder"-Force
Door machtigingen in het script te verhogen, omzeilt u UAC-beperkingen.
8. Behandel het Double Hop-probleem
- Kopieer de benodigde bestanden vooraf naar de externe computer:
Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
- Gebruik Invoke-Command om de installatie op de externe machine uit te voeren:
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 }
Door bestanden vooraf te kopiëren en directe paden te gebruiken, voorkomt u problemen met meerdere externe verbindingen.
Door deze oplossingen te volgen, zou u de fout Copy-Item: Access is denied in PowerShell moeten kunnen oplossen.
Als u suggesties of vragen heeft, kunt u deze hieronder in de opmerkingen plaatsen.
Geef een reactie