Я пытаюсь создать запланированную задачу, которая:
Сценарий отлично выполняется с консоли, но даже не начинает выполняться как задача.
#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.) Вы также можете запустить 32-битную Powershell из 64-битной Windows, выполнив версию, которая находится в Windows \ SysWOW64. Убедитесь, что вы знаете, какая версия Task Scheduler запускается.
Имейте в виду, что каждая версия Powershell имеет совершенно отдельную политику выполнения. Поэтому вам нужно установить политику выполнения дважды, чтобы охватить как 32-битные, так и 64-битные версии Powershell.
Оснастка, которую вы пытаетесь загрузить, также может иметь критическое значение. Некоторые оснастки и COM-объекты могут быть загружены только в 32-битной или 64-битной среде. Однако я только что протестировал сервер Server 2008 R2 с установленным PowerCLI, и у меня не было проблем с загрузкой оснастки, на которую вы ссылались, в обеих средах. Так что я не думаю, что здесь проблема. Но все же это нужно учитывать. Это может зависеть от той версии PowerCLI, которую вы установили. Убедитесь, что snapin загружается как из 32-битной, так и из 64-битной оболочки PS.
Наконец, можете ли вы сказать нам, что именно говорит экран «Действие» в запланированной задаче? Какую именно командную строку (с аргументами) вы используете? Вы можете получить больше отладочной информации, если запустите что-то вроде cmd /c powershell.exe c:\yourscript.ps1 2>&1> C:\debug.txt
Это также может помочь нам получить результат Get-ExecutionPolicy -List
из 32- и 64-битных сред.
Также в своем сообщении вы упоминаете:
Задача просто продолжает выполняться постоянно. Я не получаю никакого результата и это не прекращается.
Обычно это означает, что он ожидает ввода пользователя.
Изменить: опечатки, опечатки везде