Networking

使用 powershell 腳本和任務計劃將文件複製到網路驅動器

  • September 17, 2018

我有將文件從本地驅動器複製到網路映射驅動器的 powershell 腳本。當我通過 powershell 執行此腳本時,一切正常,但是當我使用任務調度程序執行此腳本時,它不起作用。我還用一行創建了簡單的腳本來創建文件

New-Item -Path "Z:\DBBackups\" -Name testfile -Value "test123" -ItemType file -force

此腳本通過具有映射網路驅動器路徑的 powershell 工作,並且當路徑在本地驅動器中時與任務調度程序一起工作,但當路徑是網路驅動器時不起作用。

任務計劃程序設置:操作:啟動程序

程序/腳本:powershell.exe

添加參數:-ExecutionPolicy Bypass -File “E:\t.ps1”

執行任務的帳戶我設置為管理員,它對網路磁碟具有權限也設置為在使用者未登錄時執行腳本,不儲存密碼並具有最高權限

我該怎麼做才能將任務計劃程序與使用網路驅動器的腳本一起使用?

您沒有指定您是在域中還是在工作組中。您遇到的主要問題是您以管理員身份執行腳本,這與網路共享上的“管理員”帳戶不同。

如果這是一台工作組電腦,那麼這將不起作用。您可以使用的唯一解決方法是讓腳本使用純文字憑據映射您的驅動器號。非常不安全,但是如果您鎖定遠端帳戶並且只授予它對該文件夾的寫入權限,您可以限制您的暴露。

如果這是一個活動目錄域,那麼你很幸運。您需要更改計劃任務並在服務帳戶下執行它。在這種情況下,管理員帳戶無權訪問網路資源,並且由於它與遠端伺服器上的帳戶不同,因此無法對遠端共享進行身份驗證。服務帳戶應該是域使用者/組託管服務帳戶。您需要在遠端共享和 NTFS 級別授予對此帳戶的訪問權限。

就像 Peter Hahndorf 已經建議的那樣,您應該更改 -Path 參數以使用遠端共享的網路路徑而不是驅動器號。如果驅動器號是映射驅動器,則驅動器號對每個使用者都是唯一的,如果您在登錄名下映射它,則管理員帳戶也無法使用該驅動器號。

ripvlan 對簽署你的腳本也提出了很好的建議。它不僅使您不必更改執行策略,而且還可以防止其他人將額外/惡意程式碼放入您的腳本並在您不知情的情況下執行它。簽署腳本後,對該腳本的任何更改都需要先將其退出,然後才能再次使用它。

引用自:https://serverfault.com/questions/931337