sql - 您可以通过 PowerShell 传递 SQL Server 对象吗?
问题描述
我有一个连接到服务器实例并获取该服务器的 SQL 代理作业的脚本。我正在尝试将 SQL 对象从一个函数传递给另一个函数,但我继续遇到错误。在这种情况下,我正在运行一个集成测试,该测试通过 PowerShell 命令行将 SQL 对象传递到我的生产脚本中。
我试过只传入服务器名称,但它似乎仍然不起作用。
集成脚本:
$inst = "Server01"
$svr = new-object ('Microsoft.SqlServer.Management.Smo.Server') $inst
Write-Host ($svr | Format-Table | Out-String)
#Call Start stop script to add in the starts and stops
powershell -command ". .\AddStart.ps1; Start-Step -svr $svr -jobName ""Test_AddStartStop_Integration"""
制作脚本:
function Start-Step($svr, $jobName)
{
$job = new-object ('Microsoft.SqlServer.Management.Smo.Agent.Job')
($svr.JobServer, $jobName)
Write-Host ($svr | Format-Table | Out-String)
}
每当我在集成测试中输出 $svr 对象时,我都会返回所有连接信息。在 Start.ps1 的 Write-Host 中,它只是给了我审核失败的东西。出现以下错误
powershell : new-object : Exception calling ".ctor" with "2" argument(s): "SetParent failed for Job
解决方案
您不能将对象传递给 powershell 的新实例。而是“点包含”包含函数的脚本并直接调用它们。例如:
. "$PSScriptRoot\Production.ps1"
$inst = "localhost"
$svr = new-object ('Microsoft.SqlServer.Management.Smo.Server') $inst
Write-Host ($svr | Format-Table | Out-String)
#Call Start stop script to add in the starts and stops
Start-Step -svr $svr -jobName "Test_AddStartStop_Integration"
推荐阅读
- scala - Scala:如何在案例类构造函数中使用类型作为一等值?
- java - 试图在一个小游戏JAVA中缩短这个if-else语句
- javascript - 如何解决具有两个值的承诺?
- android - 服务器(AndroidWebServer)无法从 PC 访问
- entity-framework-core - 如何在 Auto-mapper ProjectTo 中处理空值
- php - 我可以从另一个 cron 作业执行的 php 脚本修改 cron 作业的计划吗?
- angular - 如何向控制器发布值以接收数据以查看 Angular 5+?
- regex - 在字符串之后拉取值
- node.js - Node-Postgres:将事务语句合并为一个以提高速度?
- java - Scala:线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/log4j/LogManager