次のようなスケジュールされたタスクを作成しようとしています。
スクリプトはコンソールから完全に実行されますが、タスクとして実行を開始することすらありません。
#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の各バージョンには、完全に別個の実行ポリシーがあることに注意してください。したがって、Powershellの32ビットバージョンと64ビットバージョンの両方をカバーするには、実行ポリシーを2回設定する必要があります。
ロードしようとしているスナップインも重要な場合があります。一部のスナップインおよびCOMオブジェクトは、32ビットまたは64ビット環境でのみロードできます。ただし、PowerCLIがインストールされたServer 2008 R2サーバーでテストしたところ、両方の環境で参照したスナップインの読み込みに問題はありませんでした。ですから、それがここでの問題ではないと思います。しかし、それはまだ考慮すべきことです。インストールしたPowerCLIのバージョンによって異なる場合があります。スナップインが32ビットと64ビットの両方のPSシェルからロードされることを確認してください。
最後に、スケジュールされたタスクの[アクション]画面の内容を正確に教えてください。実行している正確なコマンドライン(引数付き)は何ですか? cmd /c powershell.exe c:\yourscript.ps1 2>&1> C:\debug.txt
のようなものを実行すると、より多くのデバッグ情報が得られる可能性があります
32ビット環境と64ビット環境の両方からのGet-ExecutionPolicy -List
の出力を提供することも役立つ場合があります。
また、あなたの投稿であなたは言及します:
タスクは永続的に実行され続けます。結果が得られず、終了しません。
これは通常、ユーザー入力を待機していることを示します。
編集:タイプミス、タイプミスeveyrwhere