是否有方法将MSSQL表格列作为参数传递给powershell函数?
我在powershell中有一个下面的代码,我在其中传递的参数来自SQL CMS,但是我愿意从MSSQL tablename传递这个servername。是否有办法实现这一点是否有方法将MSSQL表格列作为参数传递给powershell函数?,sql,sql-server,powershell,command-prompt,powershell-3.0,Sql,Sql Server,Powershell,Command Prompt,Powershell 3.0,我在powershell中有一个下面的代码,我在其中传递的参数来自SQL CMS,但是我愿意从MSSQL tablename传递这个servername。是否有办法实现这一点 import-module sqlps -DisableNameChecking function Test-SQLConnection{ param([parameter(mandatory=$true)][string[]] $Instances) $return = @() forea
import-module sqlps -DisableNameChecking
function Test-SQLConnection{
param([parameter(mandatory=$true)][string[]] $Instances)
$return = @()
foreach($InstanceName in $Instances){
$row = New-Object –TypeName PSObject –Prop @{'InstanceName'=$InstanceName;'StartupTime'=$null;'currenttime'=$null}
$servernameRDPcheck= $InstanceName
try
{
$Isconnected= (New-Object System.Net.Sockets.TCPClient -ArgumentList $row.instancename,3389).Connected
$insertquery=" update dba.dbo.cms_validation set [IsServerRDPpingable]=1 where servername='$instancename' and convert(varchar(10),entrydt,111)=convert(varchar(10),getdate(),111)"
Invoke-SQLcmd -ServerInstance 'HostedServer' -query $insertquery -Database dba
}
catch
{
$insertquery=" update dba.dbo.cms_validation set [IsServerRDPpingable]=0 where servername='$instancename' and convert(varchar(10),entrydt,111)=convert(varchar(10),getdate(),111)"
Invoke-SQLcmd -ServerInstance 'HostedServer' -query $insertquery -Database dba
}
}
return $return
}
$servers=@((dir "SQLSERVER:\SQLRegistration\Central Management Server Group\pih-win-sptlsql\Test\").Name)
$servers+="HostedServer"
Test-SQLConnection -Instances $servers
因此,我不想像上面那样从CMS传递值,而是愿意像下面那样从SQL表名传递值,并且它应该在该表中的所有服务器名
$servers= select servername from tablename
下面是您可以调用上述PS函数的方法,它对我很有用
$Query = "set nocount on; select top 20 servername from dba.dbo.tablename"
$Servers = sqlcmd -b -S 'HostedServer' -d master -h -1 -Q $Query -W
$servers+="pih-win-sptlsql"
Test-SQLConnection -Instances $servers