Поскольку на самом деле не было опубликовано ни одного вопроса или ошибок по поводу того, что у вас есть, вот что я использую, чтобы получить дисковое пространство на сервере. Вы всегда можете получить список и выбросить его в цикл foreach, отправив их этой функции, и выбросить вывод в файл, как вам захочется.
Function Get-DiskInventory
{
[CmdletBinding()]
Param (
[Parameter(ValueFromPipeline,ValueFromPipelineByPropertyName)]
[alias("Name")]
[string[]]$ComputerName="localhost",
[validateset(2,3)]
[int]$DriveType=3,
[Parameter()]
[string]$DriveLetter
)
Begin{
Write-Verbose "Getting disk inventory on $ComputerName"
}
Process {
foreach ($Computer in $ComputerName) {
Write-Verbose "Connecting to $Computer"
Write-Verbose "Looking for drive type $DriveType"
$Result = Get-WmiObject -Class win32_logicaldisk -ComputerName $Computer -Filter "drivetype=$DriveType" |
Select-Object -Property @{label='Computer';expression={$Computer}},
DeviceID,
@{label='Size(GB)';expression={$_.Size / 1GB -as [int]}},
@{label='UsedSpace(GB)';expression={($_.Size - $_.FreeSpace) / 1GB -as [int]}},
@{label='FreeSpace(GB)';expression={$_.FreeSpace / 1GB -as [int]}},
@{label='%Free';expression={$_.FreeSpace / $_.Size * 100 -as [int]}}
if ($DriveLetter) {
Write-Verbose "Filtering drives"
$Result = $Result | where deviceid -EQ "$DriveLetter`:"
}
$Result | Select-Object -Property * -Unique
}
}
End{
Write-Verbose "Finished running command"
}
}