none
我想取得硬碟的容量大小 RRS feed

  • 問題

  • Hi 各位,

    我有寫一個script要來取得所有AD上的C槽硬碟空間的script.

    run完都有出現資料,但我要export-csv會發現是no data,不知道是哪邊沒有改好

    是否可請幫我看看 :

    我的client list 已import-csv,是 $computernames

    $disk = @()
    Foreach($pci in $computernames){
            IF(Test-Connection -ComputerName $pci -Quiet) {
                $rr = Get-WmiObject win32_logicaldisk -ComputerName $pci -filter "DeviceID='C:'"
                $rr |select PSComputerName, DeviceID, @{n="Size (GB)";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace (GB)";e={[math]::Round($_.FreeSpace/1GB,2)}}
    
               }
            Else {
              $MemberObject = New-Object System.Object
              $MemberObject | Add-Member -Name PCName -Value $pci -MemberType NoteProperty
              $MemberObject | Add-Member -Name Status -Value "PC_OFFLINE" -MemberType NoteProperty
      		  $PC_Type += $MemberObject 
                  }
            }
    
    $disk | Export-Csv D:\check2424.csv -NoTypeInformation -Encoding UTF8

    在PowerShell的視窗有跑出來我要的結果,但是我的$disk count是0,代表沒資料


    Hi I can't to find solution for solve this issue, I have Event 364 Source File: /Content/1B/DCD02B975BCC454188A2BB1F036E3E590C25641B.exe Destination File: D:\WSUS\WsusContent\1B\DCD02B975BCC454188A2BB1F036E3E590C25641B.exe But I don't know how to deline this KB Number..

    2019年1月30日 上午 05:00

所有回覆

  • 我有試過比較簡單的寫法如下:

    $computernames = (import-csv d:\mypc.csv).PCName
    
    $rr = Get-WmiObject win32_logicaldisk -ComputerName $computernames -filter "DeviceID='C:'" |select PSComputerName, DeviceID, @{n="Size (GB)";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace (GB)";e={[math]::Round($_.FreeSpace/1GB,2)}} -ErrorAction SilentlyContinue
    
    $rr | Export-Csv D:\check.csv -NoTypeInformation -Encoding UTF8

    但少數幾台pc沒問題,把全部AD的PC import進去後執行完 資料變成0筆

    一直覺得搞不清楚哪邊有問題


    2019年1月30日 上午 05:47
  • $disk.count 這個是想算資料數量嗎?
    試試看改寫成
    @(
    $disk ).count

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    Facebook - 微軟台灣官方論壇愛好者俱樂部

    論壇不是神壇,沒人會通靈知道問題狀況
    請正確簡述標題及詳述狀況
    如何在論壇正確發問,可以參考iThome的文章:
    如何問到我要的答案

    2019年1月30日 上午 06:47
    版主
  • Hi 蘇老,

    @($disk ).count也是只會顯示1筆資料

    我用第二種寫法後超過100筆資料就count直接變成0,但50筆資料是會跑出來

    $computernames = (import-csv d:\mypc.csv).PCName
    
    $rr = Get-WmiObject win32_logicaldisk -ComputerName $computernames -filter "DeviceID='C:'" |select PSComputerName, DeviceID, @{n="Size (GB)";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace (GB)";e={[math]::Round($_.FreeSpace/1GB,2)}} -ErrorAction SilentlyContinue
    
    $rr | Export-Csv D:\check.csv -NoTypeInformation -Encoding UTF8

    我真的沒想到會有這麼奇怪的事情

    跑超過100筆資料,我的$rr就會出問題


    2019年1月30日 上午 07:17
  • 簡單一點,每查詢一台就 append到 csv檔案裡

    $computernames = (import-csv d:\mypc.csv).PCName
    foreach ($computername in $computernames) {
        if (Test-Connection  $computernames -Count 1  -Quiet ) {
            Get-WmiObject win32_logicaldisk -ComputerName $computername -filter "DeviceID='C:'" -ErrorAction SilentlyContinue  |select PSComputerName, DeviceID, @{n = "Size (GB)"; e = {[math]::Round($_.Size / 1GB, 2)}}, @{n = "FreeSpace (GB)"; e = {[math]::Round($_.FreeSpace / 1GB, 2)}} | Export-Csv D:\check.csv -NoTypeInformation -Encoding UTF8 -Append
        }
    }
    
    

    2019年1月30日 上午 07:54
  • 我剛用你這個已經跑了1個多小時,目前還沒產生結果..


    Hi I can't to find solution for solve this issue, I have Event 364 Source File: /Content/1B/DCD02B975BCC454188A2BB1F036E3E590C25641B.exe Destination File: D:\WSUS\WsusContent\1B\DCD02B975BCC454188A2BB1F036E3E590C25641B.exe But I don't know how to deline this KB Number..

    2019年1月30日 上午 09:02
  • 應該是有很多電腦沒有辦法 Ping到,因使用 Test-Connection timeout 4秒不能改,導致執行過久

    改用 system.net.networkinformation.ping  ,  timeout 可調整,改為 1000ms ,如果再區往內品質好可以再改短一點,速度會加快。

    $computerNames = (import-csv d:\mypc.csv).PCName
    foreach ($computerName in $computerNames) {
    	$pingObj = New-Object System.Net.NetworkInformation.Ping
    	$result = $pingObj.Send("$computerName",1000)
        if ($result.status  -eq 'Success') {
            Get-WmiObject win32_logicaldisk -ComputerName $computername -filter "DeviceID='C:'" -ErrorAction SilentlyContinue  |select PSComputerName, DeviceID, @{n = "Size (GB)"; e = {[math]::Round($_.Size / 1GB, 2)}}, @{n = "FreeSpace (GB)"; e = {[math]::Round($_.FreeSpace / 1GB, 2)}} | Export-Csv D:\check.csv -NoTypeInformation -Encoding UTF8 -Append
        }
    }


    • 已編輯 William-IT 2019年2月22日 上午 09:40 wrong code
    2019年2月1日 上午 06:37