Сценарий Powershell для проверки емкости диска C и записи в файл CSV - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь получить C: \ общий размер и свободное пространство, но оно не добавляется в файл CSV.

Пробовал с использованием DeviceID и Devicetype, не уверен, какой из них является истинным

$path="C:\server" #Split-Path $MyInvocation.MyCommand.path 
#$cred= get-credential 
$Computers = get-content "$path\computers.txt"   
foreach ($Computer in $Computers)  
{  
    $Disks = Get-wmiobject  Win32_LogicalDisk -computername $Computer
}

1 Ответ

0 голосов
/ 19 декабря 2018

это будет делать то, что я думаю, что вы хотите.Я до сих пор не уверен, в чем ваша проблема, поскольку вы не включили весь код, на который ссылались.

Я ДУМАЮ, что проблема, о которой вы говорили, заключалась в том, как идентифицировать системный диск.я получил букву диска от Get-CimInstance -ClassName CIM_OperatingSystem, а затем использовал ее для фильтрации результатов от звонка на Get-CimInstance -ClassName CIM_LogicalDisk.

У меня только одна система, так что ответы все от этой.[ ухмылка ]

#requires -RunAsAdministrator

# fake reading in a list of computers from a text file
#    in real life, use Get-Content
$ComputerList = @'
LocalHost
BetterNotBeThere
127.0.0.1
10.0.0.1
'@ -split [environment]::NewLine

$IC_Scriptblock = {
    $CIM_ComputerSystem = Get-CimInstance -ClassName CIM_ComputerSystem
    $CIM_OperatingSystem = Get-CimInstance -ClassName CIM_OperatingSystem
    $CIM_LogicalDisk = Get-CimInstance -ClassName CIM_LogicalDisk |
        Where-Object {$_.Name -eq $CIM_OperatingSystem.SystemDrive}

    [PSCustomObject]@{
        ComputerName = $CIM_ComputerSystem.Name
        SysDrive = $CIM_OperatingSystem.SystemDrive
        SysDrive_FreeSpace_GB = '{0:N2}' -f ($CIM_LogicalDisk.FreeSpace / 1GB)
        SysDrive_FreeSpace_Pct = '{0:N0}' -f (($CIM_LogicalDisk.FreeSpace / $CIM_LogicalDisk.Size) * 100)
        SysDrive_Size_GB = '{0:N2}' -f ($CIM_LogicalDisk.Size / 1GB)
        }
    }

$RespondingSystems = foreach ($CL_Item in $ComputerList)
    {
    $IC_Params = @{
        ComputerName = $CL_Item
        ScriptBlock = $IC_Scriptblock
        ErrorAction = 'SilentlyContinue'
        }

    Invoke-Command @IC_Params
    }

$NON_RespondingSystems = $ComputerList.Where({$_ -notin $RespondingSystems.PSComputerName})

$RespondingSystems
'=' * 30
$NON_RespondingSystems

# send to CSV
#    this also removes the PSComputerName, PSShowComputerName, & RunspaceId properties
$RespondingSystems |
    Select-Object -Property * -ExcludeProperty PSComputerName, PSShowComputerName, RunspaceId |
    Export-Csv -LiteralPath "$env:TEMP\Zee_SysDriveInfo.csv" -NoTypeInformation

на экране вывода ...

ComputerName           : [MySystemName]
SysDrive               : C:
SysDrive_FreeSpace_GB  : 747.75
SysDrive_FreeSpace_Pct : 80
SysDrive_Size_GB       : 931.41
PSComputerName         : LocalHost
RunspaceId             : e09d14e9-448b-4e0e-99c1-95e9c636963b

ComputerName           : [MySystemName]
SysDrive               : C:
SysDrive_FreeSpace_GB  : 747.75
SysDrive_FreeSpace_Pct : 80
SysDrive_Size_GB       : 931.41
PSComputerName         : 127.0.0.1
RunspaceId             : ece90fac-5f1d-4f27-8685-5e4955e306b8

==============================
BetterNotBeThere
10.0.0.1

Содержимое файла CSV ...

"ComputerName","SysDrive","SysDrive_FreeSpace_GB","SysDrive_FreeSpace_Pct","SysDrive_Size_GB"
"[MySystemName]","C:","747.75","80","931.41"
"[MySystemName]","C:","747.75","80","931.41"
...