![](/img/trans.png)
[英]SQL server agent not reporting failure from uncaught exception in PowerShell script
[英]Powershell Script failure on Remote Server
我有一個 PowerShell 腳本,該腳本具有使用批量復制命令將數據從 1 個 SQL 服務器傳輸到另一個服務器的邏輯。
在 Powershell版本 5中,我安裝了 SQLServer 模塊來執行上述活動。
當我通過 PowerShell 工具從本地計算機執行 Powershell 腳本時,它是成功的。 同樣,當我通過 PowerShell 工具再次從遠程服務器(Windows 2012 R2)執行相同的命令時,我的帳戶具有管理員訪問權限,它成功了。
但是,當我從指向使用服務帳戶的上述遠程服務器的 Jitterbit (ETL) 工具調用相同的命令時,它失敗並出現以下錯誤
Could not load file or assembly 'Microsoft.SqlServer.BatchParser, Version=15.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies
我確實檢查了幾個站點是否存在上述錯誤,幾乎所有地方都建議安裝SharedManagementObjects.msi 和 SQLSysClrTypes.msi所以我確實將它安裝在遠程服務器上,其版本特定於我的 MSSQL 2016,但仍然是同樣的問題。
還檢查了目錄(C:\Program Files\WindowsPowerShell\Modules\SqlServer\21.1.18230),我還可以看到 Microsoft.SqlServer.BatchParser.dll 文件存在。
所以現在我不確定為什么會出現這個問題,它似乎是服務帳戶的權限問題,所以基於我對 PowerShell 的有限了解,我設置了以下權限但仍然沒有用,有人可以幫我解決這個問題。
更新
上述錯誤已解決,但從 Jitterbit 執行時腳本未執行,沒有錯誤但只是未執行,但是,如果我使用我的登錄名登錄到遠程服務器並從 PowerShell 工具本身執行它,它正在執行。 我的猜測仍然是相同的,它必須對阻止腳本執行的服務帳戶的權限做一些事情。
嘗試兩個建議:作為腳本的第一步加載依賴項,或者,如果它確實是您認為的權限問題,請檢查您的服務帳戶的權限。
首先,您可以使用Add-Type
加載任何程序集。 如果您想以 C# 樣式的方式使用 .NET 類,或者對於它抱怨找不到依賴項的罕見問題(特別是如果它不在$ENV:Path
或當前工作目錄)。
其次,您可以檢查您的權限。 這取決於您的連接方式。 如果它是一個獨立的腳本,我希望您使用Invoke-Command
來檢查您使用的Authentication
方法。 PowerShell 默認帶有CredSSP
,但必須打開(有很多地方可以找到幫助,包括Microsoft 的文檔)。 其他需要注意的是Kerberos
和ssh
。
我不熟悉Jitterbit
,因此最好檢查他們的文檔以了解他們是如何遠程處理的。 我預計它可能會遠程進入,然后執行 PowerShell 以便您可以通過運行一個簡單的腳本來檢查以確保其權限
Write-Host "Environment Path:" -ForegroundColor Green
Write-Host $ENV:Path
Write-Host "Current Working Directory Contents:" -ForegroundColor Green
Get-ChildItem | Write-Host
您可能還想調查腳本執行的位置,無論是在遠程機器上還是在執行機器上並通過網絡編組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.