Powershell VMWare 腳本未從計劃任務執行
背景/目標
我正在嘗試創建一個計劃任務,該任務將:
在指定時間執行(一次)
執行 PowerShell 腳本:
- 將其所有輸出記錄為成績單
- 使用加密的儲存憑據連接到我的 vCenter 伺服器
- 關閉特定文件夾中所有 VM 的來賓作業系統
問題
該腳本從控制台完美執行,但甚至沒有開始作為任務執行。
編碼
#Stop an error from occurring when a transcript is already stopped $ErrorActionPreference="SilentlyContinue" Stop-Transcript | out-null #Reset the error level before starting the transcript $ErrorActionPreference="Continue" Start-Transcript -path C:\temp\Shutdown_NonProductionVMs.log -append #Add the VMWare Snap-in Add-PSSnapin -Name VMWare.VimAutomation.Core #Get the Credentials $creds = Get-VICredentialStoreItem -file C:\temp\pscreds.creds #Connect to the server using the credentials file Connect-VIServer -Server $creds.host -User $creds.User -Password $creds.Password #Get all VMs within the non-production VMs folder and then shut them down #NOTE the -WhatIf tag, which will stop it from shutting down the VMs until we're sure the script is good. Get-Folder -Name "03. Non-Production VMs" | Get-VM | Shutdown-VMGuest -WhatIf #Clean Up Disconnect-VIServer -Force -Confirm:$false Remove-PSSnapin -Name VMWare.VimAutomation.Core Stop-Transcript
到目前為止我檢查過/嘗試過的內容和其他線索
- 同樣,當控制台以管理員身份打開時,此腳本在控制台中執行得非常好。
- 我已經設置了“無限制”的機器級執行策略,看看是否有幫助。
- 我正在以創建憑據文件的同一使用者身份執行任務
- 我正在以最高權限執行任務。
- 我正在使用儲存的憑據執行任務(我的使用者憑據——與控制台相同的憑據)。
- 我嘗試註釋掉與成績單相關的程式碼,看看是否這樣做了;沒有骰子。
- 該任務只是繼續永久執行。我沒有得到任何結果,也沒有終止。
有任何想法嗎?提前感謝您提供的任何幫助!
如果您在互動式“控制台”會話中啟動 Powershell,您很可能會啟動 64 位版本的 Powershell。(執行檔將位於 Windows\System32 中。)您還可以通過執行位於 Windows\SysWOW64 中的版本從 64 位 Windows 啟動 32 位 Powershell。確保您知道任務計劃程序正在啟動哪個版本。
請記住,每個版本的 Powershell 都有一個完全獨立的執行策略。所以你需要設置兩次執行策略來覆蓋 32 位和 64 位版本的 Powershell。
您嘗試載入的管理單元也很重要。某些管理單元和 COM 對像只能在 32 位或 64 位環境中載入。但是,我剛剛在安裝了 PowerCLI 的 Server 2008 R2 伺服器上進行了測試,載入您在兩種環境中引用的管理單元都沒有問題。所以我不認為這是這裡的問題。但這仍然需要考慮。它可能取決於您安裝的 PowerCLI 版本。確保從 32 位和 64 位 PS shell 載入管理單元。
最後,您能否準確地告訴我們您計劃任務中的操作螢幕顯示的內容?您正在執行什麼確切的命令行(帶參數)?如果您執行類似的東西,您可能會獲得更多調試資訊
cmd /c powershell.exe c:\yourscript.ps1 2>&1> C:\debug.txt
它也可能有助於為我們提供
Get-ExecutionPolicy -List
32 位和 64 位環境的輸出。在您的文章中您還提到:
該任務只是繼續永久執行。我沒有得到任何結果,也沒有終止。
這通常表明它正在等待使用者輸入。
編輯:錯別字,錯別字無處不在