執行嵌入在 SSIS 或 TSQL 中的 Powershell 程式碼,而不是在外部文件中
有沒有一種方法可以在 SSIS 或 T-SQL 中嵌入 powershell 程式碼,而無需將程式碼保存在外部文件 *.ps1 中?我們知道 SSIS/Tsql 可以執行 powershell,但是程式碼似乎總是保存在其他地方。我們希望 Powershell 程式碼嵌入在 SSIS 包或 t-sql 儲存過程中,然後可以執行。
Dbas 的時間問題,設置文件共享文件夾,然後將這些 powershell 文件部署到我們的 Dev、QA、Prod 環境中(我們有多個伺服器),這可以減輕一些 Devops 過程。
T-sql 路由可能使用 xp_cmdshell 這可能是安全問題,不確定是否屬實。xp_cmdshell 是否有安全的方法或 T-SQL 區域中完全不同的路線?
下面的文章解釋了在 SSIS 中執行 Powershell,但是它正在呼叫另一個文件。我們可以在 SSIS 中嵌入程式碼並執行 powershell 嗎?
https://blogs.msdn.microsoft.com/ssis/2017/01/26/run-powershell-scripts-in-ssis/
最後,我正在嘗試執行工作流並行過程。 Powershell 在數據庫中並行執行儲存過程
Workflow TestRunParallelExecute { $ServerName = "localhost" $DatabaseName = "testrun" $Procedure_Query = "select name from sys.procedures" $Procedure_List = (Invoke-Sqlcmd -Server $ServerName -Database $DatabaseName -Query $Procedure_Query) ForEach -Parallel ($Procedure in $Procedure_List.Name) { Invoke-Sqlcmd -Server $ServerName -Database $DatabaseName -Query $Procedure } } TestRunParallelExecute cls
如果您選擇使用
xp_cmdshell
來呼叫您的工作流程,請參閱此答案以獲取指導(**tl;dr:**用空格替換所有換行符)。如果您想使用 SSIS 執行過程任務在
powershell.exe
不引用文件的情況下進行呼叫,您可以使用現有的指導,但您可以-F D:\myScript.ps1
在Process
>Arguments
對話框中放置“”,而不是放置一個要執行的臨時腳本(使用 測試-C 'hello' | Out-File C:\temp\foo.txt
)-儘管我確信對於這種方法的實際實施,有一個注意事項和陷阱的列表。您還可以創建一個Powershell SQL 代理作業步驟並臨時或按計劃執行它。