为啥这个SQL Server DBA学习PowerShell

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥这个SQL Server DBA学习PowerShell相关的知识,希望对你有一定的参考价值。

我下一个任务是快速查看我所有服务上的空闲空间。为了完成任务,我不得不踏足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

参考技术A 因为powershell是脚本语言可以很好的做数据挖掘工作。

以上是关于为啥这个SQL Server DBA学习PowerShell的主要内容,如果未能解决你的问题,请参考以下文章

长期 Oracle 开发人员/DBA 学习 SQL Server - 书籍推荐?

高级DBA之路——《SQL Server 监控和诊断》

Sql Server之旅——第九站 看公司这些DBA们设计的这些复合索引

为啥这个 SQL 查询中的单引号会影响计算?

翻译——The Power of Python and SQL Server 2017

sql server dba之路