Disk space script help
hello,
this script disk space information list of computers , output the results excel spreadsheet. i'm wanting modify uses 5 different computer name list's , output each of list's results seperate sheet.
would know how done?
i found using command add additional sheets but results computer list1 show on sheet 5.
($i = 0; $i -le 3; $i++) {
$b = $a.sheets.add() }
set-executionpolicy -executionpolicy remotesigned $erroractionpreference = "silentlycontinue" $a = new-object -comobject excel.application $a.visible = $true $a.horizontalalignment = $xlcenter $a.verticalalignment = $xlcenter $b = $a.workbooks.add() $c = $b.worksheets.item(1) for ($i = 0; $i -le 3; $i++) { $b = $a.sheets.add() } $a.worksheets.item(1).name = "list 1" $a.worksheets.item(2).name = "list 2" $a.worksheets.item(3).name = "list 3" $a.worksheets.item(4).name = "list 4" $a.worksheets.item(5).name = "list 5" $c.cells.item(1).columnwidth = 19 $c.cells.item(2).columnwidth = 13 $c.cells.item(3).columnwidth = 13 $c.cells.item(4).columnwidth = 18 $c.cells.item(5).columnwidth = 17 $c.cells.item(6).columnwidth = 13 $c.cells.item(7).columnwidth = 21 $c.cells.item(1).rowheight=16 $c.cells.item(1,1) = “server” $c.cells.item(1,2) = “drive letter” $c.cells.item(1,3) = “filesystem” $c.cells.item(1,4) = “disk capacity (gb)” $c.cells.item(1,5) = “used space (gb)” $c.cells.item(1,6) = “% used” $c.cells.item(1,7) = “free disk space (gb)” $d = $c.range("a1:g1") $d.entirecolumn.autofilter() $d.entirecolumn.numberformat = ".0" $d.interior.colorindex = 15 $d.font.colorindex = 11 $d.font.bold = $true $d.horizontalalignment = $xlcenter $d.verticalalignment = $xlbottom $d.wraptext = $true $d.orientation = 0 $d.addindent = $false $d.indentlevel = 0 $d.shrinktofit = $false $d.readingorder = $xlcontext $d.mergecells = $false $introw = 2 $colcomputers = get-content c:\list1.txt foreach ($strcomputer in $colcomputers) { $coldisks = gwmi win32_logicaldisk -computername $strcomputer -filter "drivetype = 3" foreach ($objdisk in $coldisks) { $d.entirecolumn.numberformat = ".0" $c.cells.item($introw, 1) = $strcomputer.toupper() $c.cells.item($introw, 2) = $objdisk.deviceid $c.cells.item($introw, 3) = $objdisk.filesystem $c.cells.item($introw, 4) = ($objdisk.size/ 1gb) $c.cells.item($introw, 5) = (($objdisk.size-$objdisk.freespace)/ 1gb) $c.cells.item($introw, 6) = ((($objdisk.size-$objdisk.freespace)/$objdisk.size)*100) $c.cells.item($introw, 7) = ($objdisk.freespace/ 1gb) $introw = $introw + 1 } } $c.saveas('c:\results\test1.xlsx') start-sleep 2 $excel.activeworkbook.close [system.runtime.interopservices.marshal]::releasecomobject($excel) start-sleep 1 'excel processes: {0}' -f @(get-process excel -ea 0).count stop-process -name excel -force
this trick:
$excel = new-object -comobject excel.application $excel.visible = $true $excel.workbooks.add() $computers = gc test.txt $i = 1 foreach ($computer in $computers) { $sheet = $excel.sheets.add() $sheet.name = "list $i" $sheet.cells.item(1).columnwidth = 19 $sheet.cells.item(2).columnwidth = 13 $sheet.cells.item(3).columnwidth = 13 $sheet.cells.item(4).columnwidth = 18 $sheet.cells.item(5).columnwidth = 17 $sheet.cells.item(6).columnwidth = 13 $sheet.cells.item(7).columnwidth = 21 $sheet.cells.item(1).rowheight=16 $sheet.cells.item(1,1) = “server” $sheet.cells.item(1,2) = “drive letter” $sheet.cells.item(1,3) = “filesystem” $sheet.cells.item(1,4) = “disk capacity (gb)” $sheet.cells.item(1,5) = “used space (gb)” $sheet.cells.item(1,6) = “% used” $sheet.cells.item(1,7) = “free disk space (gb)” $range = $sheet.range("a1:g1") $range.entirecolumn.autofilter() $range.entirecolumn.numberformat = ".0" $range.interior.colorindex = 15 $range.font.colorindex = 11 $range.font.bold = $true $range.horizontalalignment = [microsoft.office.interop.excel.constants]::xlcenter $range.verticalalignment = [microsoft.office.interop.excel.constants]::xlbottom $range.wraptext = $true $range.orientation = 0 $range.addindent = $false $range.indentlevel = 0 $range.shrinktofit = $false $range.readingorder = [microsoft.office.interop.excel.constants]::xlcontext $range.mergecells = $false $introw = 2 $coldisks = gwmi win32_logicaldisk -computername $computer -filter "drivetype = 3" foreach ($objdisk in $coldisks) { $range.entirecolumn.numberformat = ".0" $range.cells.item($introw, 1) = $computer.toupper() $range.cells.item($introw, 2) = $objdisk.deviceid $range.cells.item($introw, 3) = $objdisk.filesystem $range.cells.item($introw, 4) = ($objdisk.size/ 1gb) $range.cells.item($introw, 5) = (($objdisk.size-$objdisk.freespace)/ 1gb) $range.cells.item($introw, 6) = ((($objdisk.size-$objdisk.freespace)/$objdisk.size)*100) $range.cells.item($introw, 7) = ($objdisk.freespace/ 1gb) $introw ++ } $i ++ }
([string](0..9|%{[char][int](32+("39826578846355658268").substring(($_*2),2))})).replace(' ','')
Windows Server > Windows PowerShell
Comments
Post a Comment