Solved

Script to get the free space in differents hard disk units

Posted on 2012-03-11
403 Views
Hi guys,

I need your help. I am not able to achive it by myself, I am trying but I am having troubles.

I need to run a script to get the size of a unit and the avilable free space. The same for all units in that server.  I would like to create an .xls with the output

Example:
server: server01

c:   20 gb   10 gb free
d:  30 gb    20 gb free
...
and so for all units

I would like to use WSH and WMI but it is not friendly for me as I would like. I am working hard to learn but I need now.

Could anyone help me?
0
Question by:projectja
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 3
• 3

LVL 8

Expert Comment

ID: 37707696
This script [Powershell] returns CSV file with DeviceID, Size and FreeSize of all local hard drives

Get-WMIObject Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID,FreeSpace,Size | Export-Csv ./localhdd.csv
0

Author Comment

ID: 37713103
Hi,

Thanks for the reply, It is interesting.

I would need a powershell such as:

- It will be launch from  my workstation or server of my domain providing administrattors credential in other domains to be able to execute command there.
- The goal is to get:
* To get information about differents hard disk units on target server; total space in disk and free space available. (could have c,d,e,...) units. There is not a rule.
* Export that information to excel, creating the file iin the pc where the scrilpt is being launching (source pc in which I am launching the script). The name of the file is the same that the IP adress of the server where we are connecting to get information.
* In a specific folder on the target server check for files which are  contained into a specific folder and are two weeks old, the goal is delete them (are logs files). report the action in a logs indicating amount of deleted files and the size disk.

Please, I need the help of an expert, It is very important for me to be able to finish this task.

*
0

LVL 8

Expert Comment

ID: 37713583
## This scripts generate 2 output files
## remoteip.csv - CSV file that includes all logical drivers of a computer with free space and total size
## remoteip.log - Log file that includes all files remove from remote folder that have more than 15 days (last write access)

#
# Constants
#

#$pathoutputfiles ALWAYS ends with \$pathoutputfiles = "c:\path\to\output\files\"

#
#

Write-Host "Enter remote computer IP (Format: xxx.xxx.xxx.xxx) ..."
$remoteip = Read-Host Write-Host "Enter credentials for remote computer connection (Format: domain\username)..."$credential = Get-Credential
Write-Host "Enter remote folder to scan (Format: \\server\path\) ..."
$remotefolder = Read-Host # # Get Hard Disk stats # Get-WMIObject Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID,FreeSpace,Size | Export-Csv "$pathoutputfiles$remoteip.csv" # # Scan remote logs files #$stream = [System.IO.StreamWriter] "$pathoutputfiles$remoteip.log"
$files = Get-ChildItem -Path "$remotefolder" | Where-Object {$_.LastWriteTime -le [System.DateTime]::Now.AddDays(-15)} foreach ($file in $files) { if ($File -ne $NULL) { Write-Host "Deleting File$File"
$stream.WriteLine("Deleting File$File")
Remove-Item $File.FullName | Out-Null } }$stream.close()
0

Author Comment

ID: 37719491
Sorry for the dalay.

It is very intesting. Now, I am working to prepare it.
With regard to the .XLS file, I would like to add the day date so I have modified in this way:

#==================================r======
#==========================================
$fechadeHoy = [System.DateTime]::Now$day=$fechadehoy.day.ToString()$month = $fechadehoy.month.ToString()$year= $fechadehoy.year.Tostring()$stream = [System.IO.StreamWriter] "$pathoutputfiles$remoteip$day$month$year.log" Issues: - I get "month" = 3, I want "03" Any advice? 0 LVL 8 Accepted Solution fundacionrts earned 500 total points ID: 37719675$day=$fechadehoy.ToString("dd")$month = $fechadehoy.ToString("MM")$year= \$fechadehoy.Tostring("yyyy")
0

Author Comment

ID: 37732371
Thank you very much. Is has been very useful
0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

No single Antivirus application (despite claims by manufacturers) will catch or protect you from all Virus / Malware or Spyware threats. That doesn't stop you from further protecting yourself however - and this article is to show you how.
Configuring Remote Assistance for use with SCCM
With the advent of Windows 10, Microsoft is pushing a Get Windows 10 icon into the notification area (system tray) of qualifying computers. There are many reasons for wanting to remove this icon. This two-part Experts Exchange video Micro Tutorial s…
The Task Scheduler is a powerful tool that is built into Windows. It allows you to schedule tasks (actions) on a recurring basis, such as hourly, daily, weekly, monthly, at log on, at startup, on idle, etc. This video Micro Tutorial is a brief intro…
Suggested Courses
Course of the Month2 days, 10 hours left to enroll