Назад | Перейти на главную страницу

Сценарий Powershell VMWare не запускается из запланированной задачи

Справочная информация / цель

Я пытаюсь создать запланированную задачу, которая:

Проблема

Сценарий отлично выполняется с консоли, но даже не начинает выполняться как задача.

Код

#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-битных сред.

Также в своем сообщении вы упоминаете:

Задача просто продолжает выполняться постоянно. Я не получаю никакого результата и это не прекращается.

Обычно это означает, что он ожидает ввода пользователя.

Изменить: опечатки, опечатки везде