PowerShell 中的複製項存取被拒絕:8 個經過測試的修復
在 PowerShell 中遇到複製項存取被拒絕錯誤令人困惑,因為您可以在檔案總管中執行該過程而不會出現問題。這是由於寫入網路共用時缺乏 NTFS 權限,但以下解決方案將立即解決此問題。
如何修復 PowerShell 中的「複製專案存取被拒絕」錯誤?
1.確保正確的NTFS權限
- 按Win+E啟動檔案總管。
- 導航到您要修改的資料夾。
- 右鍵單擊該資料夾並選擇“屬性”。
- 按一下“安全性”標籤。
- 點選“編輯”按鈕更改權限。
- 確保您的使用者帳戶或執行 PowerShell 腳本的帳戶具有完全控制權限。
- 按一下「套用」,然後按一下「確定」以儲存變更。
確保正確的 NTFS 權限允許腳本寫入資料夾,從而解決存取問題。
2. 驗證共用權限
- Win按+開啟「執行」對話框R,輸入 fsmgmt.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遠端處理
- 在遠端電腦上,運行:
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. 處理雙跳問題
- 將必要的文件預先複製到遠端電腦:
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 中的複製項:存取被拒絕錯誤。
對於任何建議或問題,請點擊下面的評論部分將其寫下來。
發佈留言