PowerShell 中的複製項存取被拒絕:8 個經過測試的修復

PowerShell 中的複製項存取被拒絕:8 個經過測試的修復

在 PowerShell 中遇到複製項存取被拒絕錯誤令人困惑,因為您可以在檔案總管中執行該過程而不會出現問題。這是由於寫入網路共用時缺乏 NTFS 權限,但以下解決方案將立即解決此問題。

如何修復 PowerShell 中的「複製專案存取被拒絕」錯誤?

1.確保正確的NTFS權限

  1. Win+E啟動檔案總管
  2. 導航到您要修改的資料夾。
  3. 右鍵單擊該資料夾並選擇“屬性”
  4. 按一下“安全性”標籤。
  5. 點選“編輯”按鈕更改權限。
  6. 確保您的使用者帳戶或執行 PowerShell 腳本的帳戶具有完全控制權限。
  7. 按一下「套用」,然後按一下「確定」以儲存變更。

確保正確的 NTFS 權限允許腳本寫入資料夾,從而解決存取問題。

2. 驗證共用權限

  1. Win按+開啟「執行」對話框R,輸入 fsmgmt.msc,然後按下Enter
  2. 導航到共用資料夾。
  3. 右鍵單擊該資料夾並選擇“屬性”
  4. 按一下共享權限標籤
  5. 確保執行 PowerShell 腳本的使用者或群組具有完全控制權限。
  6. 按一下「套用」,然後按一下「確定」。

NTFS 和共用權限都需要允許寫入存取才能成功複製檔案。

3.以管理員身分執行PowerShell

  1. 點選“開始”按鈕。
  2. 在搜尋欄中鍵入 PowerShell。
  3. 右鍵點選 Windows PowerShell 並選擇以管理員身分執行
  4. 再次執行您的 Copy-Item 腳本。

以管理員身分執行 PowerShell 可確保對受保護的系統資料夾和網路共用的完全存取權。

4. 使用沒有憑證的 UNC 路徑

  1. 使用 New-PSDrive 為網路位置建立新的 PowerShell 磁碟機:New-PSDrive -Name "P"-PSProvider FileSystem -Root "\\network\path"-Persist
  2. 使用新的磁碟機號碼執行 Copy-Item(相應更改來源和目標路徑):Copy-Item "P:\source\file"-Destination "P:\destination\path"

使用 UNC 路徑並對應網路磁碟機有助於避免網路路徑的憑證相關問題。

5.在PowerShell中修改環境變數

  1. 使用 PowerShell 語法取代環境變數:Copy-Item -Path "E:\FolderA"-Destination "C:\Users\$($env:USERNAME)\AppData\Roaming\FolderB"-Recurse -Force
  2. 或者,直接使用 APPDATA 環境變數:Copy-Item -Path "E:\FolderA"-Destination "$($env:APPDATA)\FolderB"-Recurse -Force

在 PowerShell 中正確引用環境變數可確保正確解析路徑。

6.啟用PowerShell遠端處理

  1. 在遠端電腦上,運行:Enable-PSRemoting -Force
  2. 確保使用者有權在遠端電腦上運行腳本:Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
  3. 使用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) 問題

  1. 建立 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 }
  2. 在提升的會話中執行 Copy-Item 指令:Copy-Item "C:\source\file"-Destination "C:\Program Files (x86)\target\folder"-Force

在腳本內提升權限可以規避 UAC 限制。

8. 處理雙跳問題

  1. 將必要的文件預先複製到遠端電腦:Copy-Item -Path "C:\local\path\file"-Destination "\\remote_machine\path"-Force
  2. 使用 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 中的複製項:存取被拒絕錯誤。

對於任何建議或問題,請點擊下面的評論部分將其寫下來。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *