电源壳 |分析使用的脚本和服务器的免费存储,然后将其导出到 CSV
Powershell | Script that Analysis Used and Free Storage of Servers and than exports it to an CSV
我需要创建一个脚本来检查我们网络中主机的可用和已用存储空间。主机被加载到一个阵列中,然后那些具有空闲 Space 和大小的磁盘显示在 PowerShell 中。
现在我希望将所有这些内容导出到一个 csv 文件,以便您可以更轻松地分析数据。
这是脚本:
$servers = @("server1", "server2", "server3")
Foreach ($server in $servers)
{
$disks = Get-WmiObject Win32_LogicalDisk -ComputerName $server -Filter DriveType=3 |
Select-Object DeviceID,
@{'Name'='Size'; 'Expression'={[math]::truncate($_.size / 1GB)}},
@{'Name'='Freespace'; 'Expression'={[math]::truncate($_.freespace / 1GB)}}
$server
foreach ($disk in $disks)
{
$disk.DeviceID + $disk.FreeSpace.ToString("N0") + "GB / " + $disk.Size.ToString("N0") + "GB"
}
}
顺便说一句:)
与其尝试通过手动输出 $server
值来控制输出格式,不如将服务器名称“粘附”到每个关联的 $disk
对象上,这样会更有效更容易导出到 CSV(使用正确的服务器名称):
$servers = @("server1", "server2", "server3")
$allDisks = foreach ($server in $servers)
{
# Instead of assigning to `$disks` inside the loop,
# we let the output from all loop executions "bubble up"
# to the assignment to `$allDisks`
Get-WmiObject Win32_LogicalDisk -ComputerName $server -Filter DriveType=3 |
Select-Object @{'Name'='ComputerName'; 'Expression'={$server}},
DeviceID,
@{'Name'='Size'; 'Expression'={[math]::truncate($_.size / 1GB)}},
@{'Name'='Freespace'; 'Expression'={[math]::truncate($_.freespace / 1GB)}}
}
现在每个对象都附加了正确的服务器名称,我们可以轻松导出为 CSV:
$allDisks |Export-Csv .\path\to\output.csv -NoTypeInformation
...我们还可以使用 PowerShell 的本机格式化子系统来很好地处理交互式 shell 中的输出:
$allDisks |Format-Table DeviceID,Size,FreeSpace -GroupBy ComputerName
我需要创建一个脚本来检查我们网络中主机的可用和已用存储空间。主机被加载到一个阵列中,然后那些具有空闲 Space 和大小的磁盘显示在 PowerShell 中。 现在我希望将所有这些内容导出到一个 csv 文件,以便您可以更轻松地分析数据。
这是脚本:
$servers = @("server1", "server2", "server3")
Foreach ($server in $servers)
{
$disks = Get-WmiObject Win32_LogicalDisk -ComputerName $server -Filter DriveType=3 |
Select-Object DeviceID,
@{'Name'='Size'; 'Expression'={[math]::truncate($_.size / 1GB)}},
@{'Name'='Freespace'; 'Expression'={[math]::truncate($_.freespace / 1GB)}}
$server
foreach ($disk in $disks)
{
$disk.DeviceID + $disk.FreeSpace.ToString("N0") + "GB / " + $disk.Size.ToString("N0") + "GB"
}
}
顺便说一句:)
与其尝试通过手动输出 $server
值来控制输出格式,不如将服务器名称“粘附”到每个关联的 $disk
对象上,这样会更有效更容易导出到 CSV(使用正确的服务器名称):
$servers = @("server1", "server2", "server3")
$allDisks = foreach ($server in $servers)
{
# Instead of assigning to `$disks` inside the loop,
# we let the output from all loop executions "bubble up"
# to the assignment to `$allDisks`
Get-WmiObject Win32_LogicalDisk -ComputerName $server -Filter DriveType=3 |
Select-Object @{'Name'='ComputerName'; 'Expression'={$server}},
DeviceID,
@{'Name'='Size'; 'Expression'={[math]::truncate($_.size / 1GB)}},
@{'Name'='Freespace'; 'Expression'={[math]::truncate($_.freespace / 1GB)}}
}
现在每个对象都附加了正确的服务器名称,我们可以轻松导出为 CSV:
$allDisks |Export-Csv .\path\to\output.csv -NoTypeInformation
...我们还可以使用 PowerShell 的本机格式化子系统来很好地处理交互式 shell 中的输出:
$allDisks |Format-Table DeviceID,Size,FreeSpace -GroupBy ComputerName