为什么这个SQL Server DBA学习PowerShell--WMI任务
为什么这个SQL Server DBA学习PowerShell
Joe.TJ翻译整理,仅用于传播资讯之目的。
Windows Management Instrumentation(WMI)任务
我下一个任务是快速查看我所有服务上的空闲空间。为了完成任务,我不得不踏足WMI的世界,这提供一个对象模型来暴露运行在你的机器上的服务或者应用程序的数据。这里的第一个障碍是搞清楚WMI提供了些什么。只要你开始寻找你就会意识到WMI对象模型是巨大的,您需要花点时间去浏览它并找出什么对象能干什么。MSDN是获取WMI类文档最好的地方。
浏览Win32 WMI类
对于一个DBA最有用的WMI类就是Win32类,您可以使用如下的一行代码获取所有可用的win32类。
# Browse Win32 WMI classes
get-wmiobject -list | where {$_.name -like "win32*"} | Sort-Object
我最初发现有趣的类是:
Win32_LogicalDisk-给出你磁盘驱动器的当前状况
Win32_QuickFixEngineering-枚举计算机上所有已经安装的修复程序
下面的例子会着重使用它们及一些其它的有趣的类。
检查磁盘空间
最简单的检查磁盘空间的方式是使用Win32_LogicalDisk类。DriveType=3指所有本地磁盘。Win32_LogicalDisk不会显示挂载点的信息。
# Check disk space on local disks on local server
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3"
# Check disk space on a remote server.
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" –ComputerName ServerName
在进一步发掘以后,与其从Win32_LogicalDisk的输出中计算空闲空间百分比,不如使用更容易的PerfFormattedData_PerfDisk_LogicalDisk类和它的属性PercentFreeSpace。在下面的例子中,我检查自由空间低于20%的驱动器。使用这个类检查磁盘空间的另一个理由是它会显示挂载点信息。
# Checking disk space
foreach ($svr in get-content "C:\AllServers.txt")
{
$svr; Get-WmiObject Win32_PerfFormattedData_PerfDisk_LogicalDisk -ComputerName $svr | where{$_.Name -ne "_Total" -and $_.PercentFreeSpace -lt 20} | select-object Name, PercentFreeSpace | format-list
}
# Local computer example
Get-WmiObject -class Win32_PerfFormattedData_PerfOS_Processor -Property Name,PercentProcessorTime | where{$_.Name -eq "_Total"}
检查服务器上正在运行什么服务
找出在一个远程服务器上有哪些服务正运行的快速方法是用Get-WmiObject。指定Win32_Service类的,然后指定你想要列出的属性,最终指定你希望查询的计算机。在下面的例子中,我只打算查询服务名称。
# Checking what services are running on a computer.
get-wmiobject win32_service –computername COMPUTER | select name
IIS正在您的SQL服务器上运行吗?Oh,No!
如果你想要查看在远程机器上是否有某个特定的服务在运行,可以使用Filter参数并指定服务名称。输出如下图所示。
# Is IIS running on your server?
get-wmiobject win32_Service -computername COMPUTER -f "name='IISADMIN'"
gwmi win32_Service –co COMPUTER -f "name='IISADMIN'"
--------------------------------------------
如蒙转载或引用,请保留以下内容:
Joe's Blog:http://www.cnblogs.com/Joe-T/