簡體   English   中英

Powershell 新對象在 Windows 任務調度程序運行時失敗

[英]Powershell New-Object fails when run by Windows Task scheduler

我很確定這一定是某種奇怪的權限問題,但我找不到任何有效的方法。

這是問題所在:

我有一個 PowerShell 腳本,它執行到遠程站點的 FTP 傳輸。 它使用CuteFTP 傳輸對象。 該腳本由單行批處理文件調用。 如果我從 Windows 命令提示符中運行批處理文件,它會完美運行。 但是,如果從 Windows 任務計划程序調用批處理文件,則 PowerShell 腳本在嘗試創建 CuteFTP 對象時會失敗。 在這兩種情況下,批處理文件都是使用本地服務器上的管理員帳戶運行的。

事物的相關部分是:

批處理文件:

powershell.exe -File "D:\FTPToHost.ps1"

PowerShell 腳本:

$oSite = New-Object -ComObject CuteFTPPro.TEConnection
$oSite.Protocol = 'FTP'
$oSite.Host = "99.999.9.999"
$oSite.Login = 'UserID'
$oSite.Password = 'MyPassword'

Windows 任務計划程序通過以下命令運行:

D:\FTPToHost.cmd

批處理文件的執行在任務計划程序中工作,但是 PowerShell 腳本失敗並顯示錯誤:

New-Object : Retrieving the COM class factory for component with CLSID
{112EA537-7AB9-4E22-8BFB-7FD5FCB19849} failed due to the following error:
80080005 Server execution failed (Exception from HRESULT: 0x80080005
(CO_E_SERVER_EXEC_FAILURE)).
At D:\FTPToHost.ps1:6 char:10
+ $oSite = New-Object -ComObject CuteFTPPro.TEConnection
+          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [New-Object], COMException
    + FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand

據我所知,該問題看起來像是在任務計划程序運行 PowerShell 時未能建立正確的系統環境,因此未正確找到或實例化 ComObject。 正如我所提到的,如果我只是打開命令提示符並從命令行運行 .CMD 文件,一切都會按預期進行。

系統環境是 Windows Server 2016。任何想法將不勝感激。

規范

我是 PowerShell 的新手,我遇到了類似的場景,其中包含不同的應用程序、類似的任務調度條件以及相同的錯誤消息。 就我而言,應用程序的實例化

$oSite = 新對象 -ComObject Application.Application

實際上啟動了它,但 PowerShell 對象沒有綁定到它(我仍然不知道為什么)。

我最終做的是:

  1. 獲取應用程序的過程(在此之前添加檢查會很有幫助)。
  2. 將 PowerShell 對象綁定到進程。
  3. 使用最近綁定的對象設置屬性或調用方法。

我最終使用的代碼如下所示:

$Proc = Get-Process process-name -ErrorAction SilentlyContinue
if (-Not($Proc -eq $Null)) {
    $NewApplicationObject = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Application.Application")
    $NewApplicationObject.Property = value
    $NewApplicationObject.Quit()
    $oSite = $null
}

我猜原始對象可以使用 GetActiveObject cmdlet(或其他任何東西)綁定回來,但我沒有嘗試。

我希望這對您或任何閱讀本文的人有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM