在PowerShell V3中撰写脚本



我想知道如何使用PowerShell V3创建脚本以获取所有SQL实例的名称。例如环境23DEV将有两个虚拟框。ASNAV-DEVSQL-23和asnav-devweb-23。我想将信息返回ASNVA-DEVSQL-23一直到环境50?

任何人都可以协助吗?

问:

这是一个示例,将列出sqlserver1和sqlserver2的SQL实例2:

"SQLSERVER1","SQLSERVER2" | % {
    invoke-command -computername $_ -scriptblock{
        "SERVER $env:computername"
        (get-itemproperty 'HKLM:SOFTWAREMicrosoftMicrosoft SQL Server').InstalledInstances 
    }
}

这个单线将以PowerShell对象的形式列出您的所有本地实例:

[System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources() | Format-Table -Auto

从:http://tangodude.wordpress.com/2014/02/07/list-local-sql-server-instances-with-powershell/

编辑:

这一点代码应该比以前的代码更好:

$Current = Get-Location;
Import-Module SQLPS -DisableNameChecking;
Set-Location $Current;
[Microsoft.SqlServer.Management.Smo.SmoApplication]::EnumAvailableSqlServers()

编辑:

这是使用WMI查询目标计算机上的服务。

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | Out-Null;
$MC = New-Object Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer("COMPUTER_NAME_HERE");
foreach ($Instance in ($MC.Services | Where-Object { $_.Type -Eq "SqlServer" }))
{
    Write-Host $Instance.Name;
}

最新更新