【发布时间】:2020-06-24 13:23:09
【问题描述】:
我在powershell中有一个下面的代码,我传递的参数来自SQL CMS,但是我愿意从MSSQL tablename传递这个服务器名有没有办法实现这一点。
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
所以我愿意从下面的 SQL 表名中传递值,而不是像上面那样从 CMS 传递值,并且应该在该表中的所有服务器名时循环它
$servers= select servername from tablename
【问题讨论】:
标签: sql sql-server powershell command-prompt powershell-3.0