有什么办法可以从Sql Server存储过程中运行存储在sql server表中的powershell脚本吗?
答案 0 :(得分:2)
内置的sproc xp_cmdshell可以用来做一些......非常hacky的事情。它不仅可以用于从T-SQL内部发出命令行语句,还可以与bcp
一起使用,将选择查询的结果保存到文件as described in this article。
所以是的,你问的问题在理论上是可行的。您可以构造一个T-SQL语句来将powershell脚本保存到文件中,然后再次调用xp_cmdshell来执行刚刚保存的文件。 (警告:我已成功完成了几个项目中的每个项目,但从未将两者合并。您的里程可能会有所不同。)
不管你是否真的应该这样做,是另一回事。有两件事需要考虑:
大多数开发人员会考虑在存储过程中使用这个(公认的相当复杂的)逻辑,这是一个讨厌的黑客,因为它很难调试/维护。调用者如何确定脚本是否完成?调用者如何跟踪命令是否正确发出?当事情破裂时,下一位开发人员如何维护这一点?
还有安全方面的考虑因素。显然,只有具有足够权限的用户发出xp_cmdshell调用,才会保存文件,并且只执行其脚本。打开这些权利可能会打开一些安全漏洞......解决权利不充分的问题同样具有挑战性。