服务器磁盘管理(分区和挂载)

服务器磁盘管理(分区和挂载),第1张

有几种不同的方法可以获得单个用户的磁盘配额信息。具体选用何种方法取决于所安装的 Windows 版本。如果您运行的是 Windows XP 或 Windows 2003,那么可以通过 Win32_DiskQuota 类别获得某个用户的磁盘配额信息。例如,这里有一个脚本可以获得用户 kenmyer 的磁盘配额信息:strComputer = "" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colQuotas = objWMIServiceExecQuery _ ("Select From Win32_DiskQuota Where " & _ "User=‘Win32_AccountDomain=""fabrikam"",Name=""kenmyer""‘") For Each objQuota in colQuotas WscriptEcho "Disk Space Used: " & objQuotaDiskSpaceUsed WscriptEcho "Limit: " & objQuotaLimit WscriptEcho "Quota Volume: " & objQuotaQuotaVolume intStatus = objQuotaStatus Select Case intStaus Case 0 strStatus = "OK" Case 1 strStatus = "Warning limit reached" Case 2 strStatus = "Quota exceeded" Case Else strStatus = "Unknown" End Select WscriptEcho "Status: " & strStatus WscriptEcho "Warning Limit: " & objQuotaWarningLimit Next 好的,WQL 查询看起来有点夸张(好多双引号!),但 Win32_DiskQuota 类别就是这么设计的:User 属性实际上是一个参考属性,是另一个对象和另一个类别(这里是 Win32_Account 类别)的指针。幸好,虽然不是非常好用,但也不难用。如果您想获得名为“carolphilips”的用户(其帐户在 contoso 域中)的配额信息,又该如何呢?很简单;只要将“kenmyer”替换为“carolphilips”,并将“fabrikam”替换为“contoso”就行了:Set colQuotas = objWMIServiceExecQuery _ ("Select From Win32_DiskQuota Where " & _ "User=‘Win32_AccountDomain=""contoso"",Name=""carolphilips""‘") 至少,脚本的其他部分非常简单;我们只回显各个属性的值。我们添加的唯一“有趣”的东西是一个 Select Case 语句,用于将 Status 属性返回的数值转化为可读的字符串。例如,如果返回的 Status 值为“2”,脚本就会把该值转化为字符串 Quota exceeded。此外,您可能只想让该脚本以 1024 来划分配额数。这将把这些值(以千字节为单位)转化为以兆字节为单位。顺便说一下,该脚本将返回用户 kenmyer 在计算机的所有驱动器上的磁盘配额信息。如果您只想获得单个驱动器的配额信息,又该怎么办呢?啊,真得问这个问题,不是吗?可以办到;只是由于 QuotaVolume 属性是另一个参考属性,WQL 查询看起来更加怪异:Set objQuota = objWMIServiceGet _ ("Win32_DiskQuotaQuotaVolume=‘Win32_LogicalDiskDeviceID=""C:""‘," & _ "User=‘Win32_AccountDomain=""tomservo"",Name=""Administrators""‘") 如果您需要其他驱动器的信息,只要复制上述查询并将“C:”替换为适当的驱动器号。当然,这个脚本在 Windows XP 和 Windows 2003 上非常好用,但是在 Windows 2000 上却行不通;这是因为 Windows 2000 不支持 Win32_DiskQuota 类别。(Windows NT 40 或 Windows 98 也不支持该类别,至少部分原因在于这些 Windows 版本不支持磁盘配额,就是这么回事。)那么如果您需要某台运行 Windows 2000 的计算机的磁盘配额信息,该怎么办呢?这时,您可以使用这个脚本,其利用 Shell 对象获得用户 kenmyer在本地计算机的驱动器 C: 上的磁盘配额信息:Set colDiskQuotas = CreateObject("MicrosoftDiskQuota1") colDiskQuotasInitialize "C:\", True Set objUser = colDiskQuotasFindUser("fabrikam\kenmyer") WscriptEcho "Logon name: " & objUserLogonName WscriptEcho "Quota limit: " & objUserQuotaLimit WscriptEcho "Quota threshold: " & objUserQuotaThreshold WscriptEcho "Quota used: " & objUserQuotaUsed 正如您所看到的,这个脚本真的是更简短更精炼,包含的双引号相对较少。我们为何不推荐您在 XP 或 Windows 2003 上使用该脚本呢?您可以随意使用。但是,使用 Shell 对象获取磁盘配额信息存在两个限制。其一,Shell 对象脚本只能在本地计算机上运行;不同于 WMI 脚本,您将无法连接到远程计算机并返回磁盘配额信息。其二,每次只能得到一个磁盘的配额信息。通过 WMI,可以返回包含计算机上所有驱动器的磁盘配额信息的集合。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13113165.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存