2015-11-04 120 views
1

我寫了一個Powershell腳本,它保存在.ps1文件中。它僅適用於PowerShell的的32位版本位於計劃任務不能使用x86版本的Powershell運行

%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe

,當我手動運行該腳本,但它不是通過Windows任務調度運行。我以運行該腳本的同一用戶的身份運行該任務。在動作我的任務的一部分,我把上述地址作爲程序/腳本和我寫我的.ps1文件的完整路徑爲添加參數(可選)。但它似乎並不奏效。我也試着把我的.ps1文件的父文件夾作爲開始值無濟於事。

如何告訴Task Scheduler使用32位版本運行我的Powershell腳本?

UPDATE:我必須在這裏添加我的腳本實際上打開一個Excel文件,刷新它,然後關閉它。我知道在非交互式環境中使用Excel是一個不好的主意。但我仍然不知道這是否是我的腳本沒有運行的原因。

回答

0

您可以採用腳本來確定當前的powershell版本,並根據需要使用32位版本調用相同的腳本。將這些行放在腳本的頂部:

# ensure the script is running with the 32bit powershell 
if ($env:Processor_Architecture -ne "x86") 
{ 
    $psx86 = Join-Path $env:SystemRoot '\syswow64\WindowsPowerShell\v1.0\powershell.exe' 
    & $psx86 -noprofile -file $myinvocation.Mycommand.path -executionpolicy bypass 
    exit 
} 

注意:如果您的腳本需要它們,您可以將參數追加到powershell調用中。

+0

但是,恐怕不是問題所在。問題是這整個事情不喜歡被安排。 – Disasterkid

+0

您可以在任務計劃程序中使用'powershell -file ...'調用腳本。 –

2

高度懷疑Excel是這似乎不起作用的原因。讓你的腳本做一些非Excel文件(例如,創建文件),並檢查這部分被執行罰款

兩大陷阱我遇到自動化Excel時:

  1. Create empty folders if they don't exist (excel automation bug)

  2. Ensure DCOM security settings are configured to allow Excel to run.如果您正在以手動運行腳本的相同用戶的身份運行任務,則仍然需要這樣做。

當DCOM權限設置不正確並將腳本作爲自動化任務運行時,您將收到以下錯誤消息。 Saw this as session was transcribed, and transcription output to text file

New-Object : Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

相關問題