我有一個PowerShell腳本(test.ps1),它通過Invoke-Sqlcmd執行一個簡單的SQL查詢。該腳本位於遠程文件共享服務器上。下面是腳本:如何在潮汐的PowerShell腳本中運行Invoke-Sqlcmd
param
(
[string]$SQL_username,
[string]$SQL_password
)
Write-Host ('begin script')
$db = 'some_DB'
$server = 'some_IP'
$query = 'SELECT TOP 10 * FROM some_schema.some_table'
Invoke-Sqlcmd -Username $SQL_username -Password $SQL_password -ServerInstance $server -Database $db -Query $query -QueryTimeout 60000
Write-Host ('end script')
當我遠程與潮汐用戶帳戶的文件共享服務器,腳本執行成功和預期。
我有一個相應的潮汐作業,執行此test.ps1腳本。這裏是潮作業信息:
命令
C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe
命令參數
-ExecutionPolicy bypass -File D:\some_path\test.ps1
-SQL_username "<SQL_username.1>"
-SQL_password "<SQL_password.2>"
當我運行通過潮汐的腳本,在潮汐的輸出屏幕顯示:
開始腳本
Invoke-Sqlc MD:「調用-SQLCMD」一詞不被識別爲名稱的cmdlet,函數,腳本文件或可操作的程序的 ...
端腳本
所以,很顯然,無論用戶潮汐用於運行腳本,用戶識別Write-Host
cmdlet,但它不識別Invoke-Sqlcmd
cmdlet。怎麼會這樣?而且,我該如何解決這個問題? (我發現潮汐用戶是NT AUTHORITY \ SYSTEM,而不是作業的「運行」選項卡中指定的運行時用戶,這與我以遠程服務器身份登錄到遠程服務器的潮汐用戶相同。)
SQL模塊未在SYSTEM的PowerShell配置文件中加載。請參閱http://www.jasonq.com/blog/2012/3-things-to-do-if-invoke-sqlcmd-is-not-recognized-in-windows-powershell。您可能需要將任務設置爲使用用戶帳戶運行,因爲我認爲在以SYSTEM身份運行時可能無法訪問網絡。 –
我認爲你是對的。我使用另一個用戶帳戶使用New-PSSession創建了一個新的PowerShell會話,並且它可以工作。 – user3100444