powershell - 从 powershell 数组求和时如何包含某些值?
问题描述
我想得到一个 SQL 服务器用于数据和日志文件的总空间的总和。从互联网上的其他几个来源,我有以下代码:(是的,我是 Powershell Noob)
$servers = "SQLSERVER1"
$array = @()
foreach($server in $servers){
$sysinfo = Get-WmiObject Win32_Volume -ComputerName $server
for($i = 0;$i -lt $sysinfo.Count; $i++){
$sname = $sysinfo[$i].SystemName
$servername = $server
$label = $sysinfo[$i].Label
if(($label) -and (!($label.Contains("FILLER")))){
write-host "Processing $label from $server"
$name = $sysinfo[$i].Name
$capacity = [math]::round(($sysinfo[$i].Capacity/1GB),2)
$fspace = [math]::round(($sysinfo[$i].FreeSpace/1GB),2)
$sused = [math]::round((($sysinfo[$i].Capacity - $sysinfo[$i].FreeSpace)/1GB),2)
$fspacepercent = [math]::Round((($sysinfo[$i].FreeSpace*100)/$sysinfo[$i].Capacity),2)
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name "ServerName" -Value $server
$obj | Add-Member -MemberType NoteProperty -Name "Label" -Value $label
$obj | Add-Member -MemberType NoteProperty -Name "Name" -Value $name
$obj | Add-Member -MemberType NoteProperty -Name "Used(GB)" -Value $sused
$array += $obj
}
}
$array += write-output " "
$totalSize = ($array | Measure-Object 'Used(GB)' -Sum).Sum
$array += $totalsize
$array += write-output " "
}
$totalsize
这给了我以下结果:
Processing Recovery from SQL-Group1-DB
Processing System from SQL-Group1-DB
Processing SQLInstall from SQL-Group1-DB
Processing OCTOPUS from SQL-Group1-DB
Processing SQL_DATA from SQL-Group1-DB
Processing SQL_LOG from SQL-Group1-DB
Processing TEMP_DB from SQL-Group1-DB
Processing SSS_X64FREV_EN-US_DV9 from SQL-Group1-DB
274.92
当然,这包括服务器上的每个驱动器。我只希望包含 SQL_DATA 和 SQL_LOG 驱动器。
关于如何实现这一目标的任何想法?(如果可行,很高兴使用完全不同的代码)TIA
解决方案
如果您不想要服务器上所有驱动器的信息,您可以通过使用如下子句来限制变量中Get-WmiObject
cmdlet的结果:$sysinfo
Where-Object{}
$sysinfo = Get-WmiObject Win32_Volume -ComputerName $server |
Where-Object { 'SQL_DATA', 'SQL_LOG' -contains $_.Label }
推荐阅读
- python - 更改数据框的列名后出现键错误
- neural-network - 用python重置神经网络中的连接
- javascript - 如何使用 mongoose 更新 mongodb 中的值?
- c++ - 由于二维数组声明,C++ 14 中的运行时错误
- node.js - 为什么工作没有在公牛的等待队列中等待?
- javascript - jQuery函数过滤多列
- angular - 使用 RxJS 启动 spinner,显示至少 500ms,然后最多在 10s 后停止
- common-lisp - clsql:为什么要“神奇地”添加表?
- python - 加速大型数组和数据集的操作(Pandas 慢,Numpy 更好,进一步改进?)
- php - 将 postgresql 数据库连接到 codeigniter