簡體   English   中英

Powershell 遠程服務器上的腳本失敗

[英]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 的文檔)。 其他需要注意的是Kerberosssh

我不熟悉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.

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