I am writing a script that will get a data count off of HDDs that we work on. Everything is working and when I added a Read-Host so that you could enter the drive letter of the connected HDD it worked until I put it on a jump drive and now all it reads
is the jump drive drive letter.
RunMe.bat
@echo off
:: by: Joseph Monarch
pushd %~dp0
powershell -nologo -file "datacount.ps1"
pause
datacount.ps1
# User input for drive letter
$drive = Read-Host "Enter drive letter for data count. (ex. C)"
# Lists in an array all directories and files that need to be counted
$directory = get-childitem -Path "$drive:\*" -force -exclude *windows*, *Intel*, '*Program Files*', *.ini*, *Users*, *PerfLogs*, *eula*, *.dll*, *VC*, *.sys*, *Recycle*, '*Documents and Settings*', *ProgramData*, *Recovery*, '*System Volume Information*'
$directory += get-childitem -Path "$drive:\Users\*" -exclude '*All Users*', *Default*, '*Default User*', *AppData*, '*Application Data*', *Cookies*, *.dll*, *.ini*, *Microsoft*, *NetHood*, *PrintHood*, *Recent*, *SendTo*, '*Start Menu*', *Templates*, '*Saved Games*', *Searches*
$directory += get-childitem -Path "$drive:\Program Files\*" -force -exclude '*Common Files*', '*Internet Explorer*', *MSBuild*, '*Reference Assemblies*', *Roxio*, *Symantec*, '*Uninstall Information*', '*Windows Defender*', '*Windows Journal*', '*Windows Mail*', '*Windows Media Player*', '*Windows NT*', '*Windows Photo Viewer*', '*Windows Portable Devices*', '*Windows Sidebar*', *.ini*
$directory += get-childitem -Path "$drive:\Program Files (x86)\*" -force -exclude '*Common Files*', '*Internet Explorer*', *MSBuild*, '*Reference Assemblies*', *Roxio*, *Symantec*, '*Uninstall Information*', '*Windows Defender*', '*Windows Journal*', '*Windows Mail*', '*Windows Media Player*', '*Windows NT*', '*Windows Photo Viewer*', '*Windows Portable Devices*', '*Windows Sidebar*', *.ini* , *Adobe*, *Bonjour*, *Google*, '*InstallShield Installation Information*', *Java*, *JRE*, *Microsoft.NET*, '*Mozilla Firefox*', '*Mozilla Maintenance Service*', *MSBuild*, '*MSXML 4.0*', '*OpenOffice.org 3*', *QuickTime*, *Temp*
#Get all profile names
$profile = get-item -Path $drive:\Users\* -exclude '*All Users*', *Default*, '*Default User*'
foreach ($name in $profile) {
$name = $name.basename
if($name -eq "Public") {""
}
else {
# Search specific user folders
if(Test-Path "$drive:\Users\$name\AppData\Local\Microsoft\Windows Mail") {
$directory += get-item -Path "$drive:\Users\$name\AppData\Local\Microsoft\Windows Mail\*"
}
if(Test-Path "$drive:\Users\$name\AppData\Local\Microsoft\Outlook") {
$directory += get-item -Path "$drive:\Users\$name\AppData\Local\Microsoft\Outlook\*"
}
if(Test-Path "$drive:\Users\$name\AppData\Local\Microsoft\Windows Live Mail") {
$directory += get-item -Path "$drive:\Users\$name\AppData\Local\Microsoft\Windows Live Mail\*"
}
}
}
# Get total size for each item in $directory in KB
$count = foreach ($dir in $directory) {
$size = Get-ChildItem $dir -recurse -force -ErrorAction SilentlyContinue | Measure-Object -Sum Length
$dsize = $size.sum / 1KB
$tsize = "{0:N2}" -f $dsize
$tsize
}
# Sum all the items in $count
function Get-Sum ($count) {
return ($count | Measure-Object -Sum).Sum
}
$scount = Get-Sum($count)
#Display results in MB
if ($scount -le 1MB) {
$tcount = $scount / 1KB
$tcount = "{0:N2}" -f $tcount
Write-Host "$tcount MB"
}
#Display results in GB
elseif ($scount -le 1GB) {
$tcount = $scount / 1MB
$tcount = "{0:N2}" -f $tcount
Write-Host "$tcount GB"
}
#Display results in TB
elseif ($scount -le 1TB) {
$tcount = $scount / 1GB
Also I get this error in regards to this line of code
Measure-Object : Property "Length" cannot be found in any object(s) input.
At C:\Users\Owner\Documents\datacount.ps1:49 char:94+ $size = Get-ChildItem $dir -recurse -force -ErrorAction SilentlyContinue | Measure-Object <<<< -Sum
Length+ CategoryInfo : InvalidArgument: (:) [Measure-Object], PSArgumentException+ FullyQualifiedErrorId : GenericMeasurePropertyNotFound,Microsoft.PowerShell.Commands.MeasureObjectCo
mmand
Measure-Object : Property "Length" cannot be found in any object(s) input.
At C:\Users\Owner\Documents\datacount.ps1:49 char:94+ $size = Get-ChildItem $dir -recurse -force -ErrorAction SilentlyContinue | Measure-Object <<<< -Sum
Length+ CategoryInfo : InvalidArgument: (:) [Measure-Object], PSArgumentException+ FullyQualifiedErrorId : GenericMeasurePropertyNotFound,Microsoft.PowerShell.Commands.MeasureObjectCo
mmand
if(Test-Path "$drive:\Users\$name\AppData\Local\Microsoft\Windows Live Mail") {
$directory += get-item -Path "$drive:\Users\$name\AppData\Local\Microsoft\Windows Live Mail\*"
}