Sql server sql server tsql运行powershell脚本

Sql server sql server tsql运行powershell脚本,sql-server,tsql,powershell,Sql Server,Tsql,Powershell,我创建了一个powershell脚本,该脚本打开excel文件,格式化列,然后重新保存excel文件。此脚本可从powershell和命令行运行,但在存储过程tsql中运行时,它不会执行任何操作。也没有错误。我尝试从作业代理运行powershell脚本,但它运行了,但什么也没发生。我是否必须执行某些操作才能在sql server中启用powershell脚本 以下是存储过程中的代码: DECLARE @SqlPowerShell AS VARCHAR(1000) set @SqlPowerShe

我创建了一个powershell脚本,该脚本打开excel文件,格式化列,然后重新保存excel文件。此脚本可从powershell和命令行运行,但在存储过程tsql中运行时,它不会执行任何操作。也没有错误。我尝试从作业代理运行powershell脚本,但它运行了,但什么也没发生。我是否必须执行某些操作才能在sql server中启用powershell脚本

以下是存储过程中的代码:

DECLARE @SqlPowerShell AS VARCHAR(1000)
set @SqlPowerShell = 'powershell.exe -ExecutionPolicy Bypass -File "C:\temp\Script.ps1"'

EXEC xp_cmdshell @SqlPowerShell
以下是powershell脚本:

#
# Script.ps1
#
#param([string]$today="0") #Must be the first statement in your script
$today=Get-Date -format Mddyyyy
$file="c:\temp\TeamCurrentStockInventory_" + $today + ".xlsx"
$xl=New-Object -ComObject "Excel.Application"
$xl.DisplayAlerts = $FALSE
#$xl.Visible = $TRUE

$wb=$xl.Workbooks.Open($file)

# Open/Edit first Sheet
$ExcelWorkSheet = $xl.WorkSheets.item(1)
#Select entire column
$ExcelWorkSheet.Range("F:F").HorizontalAlignment = -4152 #right justified value

$wb.SaveAs("c:\temp\TeamCurrentStockInventory_" + $today + "_v1.xlsx")
$wb.Close()
$xl.Quit()

#Remove-Item $file

# now you only need to release two.
while([System.Runtime.Interopservices.Marshal]::ReleaseComObject($wb)){}
while([System.Runtime.Interopservices.Marshal]::ReleaseComObject($xl)){}

您是否安装了power shell支持?请看一下,您是否已在该sql框上安装了excel?我相信这将是一个障碍。我不希望office安装在数据库服务器上。office已安装。不确定是否支持powershell。对于初学者,您可能必须提供powershell.exe的完整路径。其次,您必须确保正在运行的帐户有权运行powershell脚本,并有权访问excel文件。第三,最好创建一个sql代理作业来为您执行powershell脚本,然后通过TSQL调用sql代理作业来执行它。在SQL代理作业中,应该有选项提供具有适当权限的帐户名/pwd。我有一个调用存储过程的SQL代理作业。