运行 来自 SQL 服务器代理的 Powershell 脚本(运行其他 exe 文件)
Running Powershell script (that runs other exe file) from SQL Server Agent
我不确定为什么当我在 SQL Server Agent 中 运行 时,Python 脚本的这一部分无法完成工作。
这个python脚本来自“ConvertToBAK.py”。
for f in glob.glob(r'Z:\TestPCC\Yesterday\*.SQB'):
os.system( f'SQBConverter "{f}" "{f[:-4]}.bak" {password}' )
所以,我 运行 Powershell 调用这个 Python 文件 (ConvertToBak.py)。
当我在 SQL 服务器代理之外 运行 这个 Powershell 脚本时,一切正常。
我有以下 PowerShell 脚本。
$path = 'Z:\TestPCC'
$file = 'ConvertToBAK.py'
$cmd = $path+"\"+$file # This line of code will create the concatenate the path and file
Start-Process $cmd # This line will execute the cmd
SQBCoverter 是第三方 (RedGate) 应用程序的 exe 文件,基本上可以将 SQB 文件格式转换为 BAK 文件格式。
使用相同的 Python 代码,SQL 服务器代理完成其他任务(例如将文件从这里移动到那里),但它只是 skips/does 不执行此任务。
我是否需要向 Powershell 添加任何内容,或者 SQL 服务器代理 运行 第三个 party/external exe 文件 (SQBConverter) 是否存在任何权限问题?
顺便说一句,我登录 SQL Server Agent 是我自己的帐户,因为使用其他系统帐户,我无法执行 Python 代码中的一些任务。
我也检查了这个特定exe文件的权限问题,并为所有用户授予了完全权限。
根据你的说法,应该没问题,但如果想确保以适当的用户权限启动脚本,你也可以将相应的凭据直接传递给 Start-Process Cmdlet:
#Use parameters to obtain username and password, avoid to hard-code them here.
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
Start-Process $cmd -Credential ($credentials)
我不确定为什么当我在 SQL Server Agent 中 运行 时,Python 脚本的这一部分无法完成工作。
这个python脚本来自“ConvertToBAK.py”。
for f in glob.glob(r'Z:\TestPCC\Yesterday\*.SQB'):
os.system( f'SQBConverter "{f}" "{f[:-4]}.bak" {password}' )
所以,我 运行 Powershell 调用这个 Python 文件 (ConvertToBak.py)。
当我在 SQL 服务器代理之外 运行 这个 Powershell 脚本时,一切正常。
我有以下 PowerShell 脚本。
$path = 'Z:\TestPCC'
$file = 'ConvertToBAK.py'
$cmd = $path+"\"+$file # This line of code will create the concatenate the path and file
Start-Process $cmd # This line will execute the cmd
SQBCoverter 是第三方 (RedGate) 应用程序的 exe 文件,基本上可以将 SQB 文件格式转换为 BAK 文件格式。
使用相同的 Python 代码,SQL 服务器代理完成其他任务(例如将文件从这里移动到那里),但它只是 skips/does 不执行此任务。
我是否需要向 Powershell 添加任何内容,或者 SQL 服务器代理 运行 第三个 party/external exe 文件 (SQBConverter) 是否存在任何权限问题?
顺便说一句,我登录 SQL Server Agent 是我自己的帐户,因为使用其他系统帐户,我无法执行 Python 代码中的一些任务。
我也检查了这个特定exe文件的权限问题,并为所有用户授予了完全权限。
根据你的说法,应该没问题,但如果想确保以适当的用户权限启动脚本,你也可以将相应的凭据直接传递给 Start-Process Cmdlet:
#Use parameters to obtain username and password, avoid to hard-code them here.
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
Start-Process $cmd -Credential ($credentials)