在PowerShell中試試這個:
Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement10" -Class SqlServiceAdvancedProperty -ComputerName <SERVERNAME> | Format-Table ServiceName, PropertyName, PropertyNumValue, PropertyStrValue -AutoSize
使用root\Microsoft\SqlServer\ComputerManagement10
名稱空間用於sql server 2008及更高版本,使用root\Microsoft\SqlServer\ComputerManagement
替代2005。
您可以使用System.Management
名稱空間從.net中實現此結果。
UPDATE
您可以用它來檢測安裝哪種類型的SQL Server WMI提供程序。
public static IEnumerable<string> EnumCorrectWmiNameSpace()
{
const string WMI_NAMESPACE_TO_USE = @"root\Microsoft\sqlserver";
try
{
ManagementClass nsClass =
new ManagementClass(
new ManagementScope(WMI_NAMESPACE_TO_USE),
new ManagementPath("__namespace"),
null);
return nsClass
.GetInstances()
.Cast<ManagementObject>()
.Where(m => m["Name"].ToString().StartsWith("ComputerManagement"))
.Select(ns => WMI_NAMESPACE_TO_USE + "\\" + ns["Name"].ToString());
}
catch (ManagementException e)
{
Console.WriteLine("Exception = " + e.Message);
}
return null;
}
您可以將WMI用於SQL SERVER 2005及更高版本,但WMI無法發現SQL Server 2000。 –
我正在使用'Microsoft.SqlServer.Management.Smo',但它只有以下類:'Agent','Broker'和'Mail'。我沒有看到'Wmi'。我在MSDN閱讀,我可能需要添加DLL Microsoft.SqlServer.SqlEnum.dll,但它沒有在.NET引用中列出。 – KernelMode
對於2000,你不能使用Smo,它沒有'Smo'它有'Dmo'。如果你需要解決你的問題只在2005年和以上,我可以幫助你,但對於2000年,我不知道它是如何完成的。 –