Powershell
PowerShell 腳本未在計劃任務上執行
我一直在嘗試設置 PowerShell 腳本以作為 Windows Server 2012 R2 伺服器上計劃任務的一部分執行。如果我從 GUI 手動執行該腳本,該腳本將執行,但我嘗試從任務中執行它的嘗試都失敗了。
經過一些故障排除後,我發現如果我將任務設置為“僅在使用者登錄時執行”並執行任務,它執行得很好。它會彈出一個 powershell 視窗,執行腳本,然後自行關閉。似乎我走在正確的軌道上,我可能已經縮小了問題的範圍,但我不知道從這裡去哪裡。顯然,無論我是否登錄,我都希望腳本執行。
以防萬一,這是我正在執行的腳本:
Get-ChildItem C:\somefolder -Recurse| Where-Object{$_.PsIsContainer}| Sort-Object CreationTime -desc| Select-Object -Skip 3| Remove-Item -Force
我可以從這裡往哪裡看?我已經能夠從伺服器 2008 以這種方式執行 powershell 腳本而沒有問題,但我似乎無法破解這個腳本。
編輯:對於啟動程序的任務集的操作,在程序/腳本下,我有“powershell”,然後是“.\myscript.ps1”用於爭論,然後“c:\”用於啟動。
終於想通了這個:
問題原來是我試圖操縱網路驅動器上的某些東西。我學到的是,即使您已經在 Windows 中映射了驅動器,您也必須取消映射並重新映射驅動器作為腳本的一部分,以便通過 PowerShell 腳本以非互動方式操作文件。
這是我添加到我的 PowerShell 腳本以使其工作的內容:
$secpasswd = ConvertTo-SecureString "YourPassword" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential ("username", $secpasswd) Remove-PSDrive –Name “Z” New-PSDrive –Name “Z” –PSProvider FileSystem –Root “\\192.168.X.X\backup” –Persist -Credential $mycreds
當您登錄時會記憶體憑據,但當您通過任務管理器執行相同的腳本時不會使用這些憑據。
非常感謝我對這個問題的所有答案,它真的幫助我最終弄清楚了這個問題,希望這也能幫助其他人。
最後一點,同樣的方法也適用於同一台伺服器上的批處理文件。
您可以嘗試使用以下方式執行:
powershell -noprofile -noexit -executionpolicy bypass -file C:\path\script.ps1
還要檢查:get-executionpolicy 設置為 RemoteSigned
還要檢查“執行使用者是否登錄。