Unir varios ficheros Excel

#Abrimos una aplicación excel
$ExcelObject=New-Object -ComObject excel.application
$ExcelObject.visible=$true

#Cogemos los excels que queremos unir.
$ExcelFiles=Get-ChildItem -Path C:\tmp\archivosexcel

$Workbook=$ExcelObject.Workbooks.add()
$Worksheet=$Workbook.Sheets.Item("Hoja1")

foreach($ExcelFile in $ExcelFiles){
    #Abrimos cada hoja de cada fichero y la copiamos en nuestro nuevo excel.
    $Everyexcel=$ExcelObject.Workbooks.Open($ExcelFile.FullName,0,$true)
    $Everysheet=$Everyexcel.sheets.item(1)
    $Everysheet.Copy($Worksheet)
    $Everyexcel.Close()
 
}
#Grabamos nuestro excel que contiene los demas.
$Workbook.SaveAs("C:\tmp\archivosexcel\ExcelUnido.xlsx")
$ExcelObject.Quit()

MoveFilesFromOneDirectoryToAnotherBasedOnfileCriteria

$oldyear="2020"
$newyear="2021"
$baseDir = "c:\tmp\ejemplo\$newyear\"
#Filtraremos por ficheros que empiecen por
$NameToFind = "F.20."
#buscamos en la carpeta del 2021 los ficheros que cumplan el criterio, aunque esten en subdirectorios!!!
$filesMatching = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -eq $false -and $_.Name.Contains($NameToFind) } 

$dirUnSorted=@()
foreach($file in $filesMatching){
    #Write-Host $file.Directory.Name
    $dirUnSorted+=$file.Directory.Name
}
#now we make unique the parent's directories
$dirSorted= $dirUnSorted | Sort-Object | Get-Unique




$(foreach($dir in $dirSorted){

   #si no existe el directorio lo creamos
   If(!(test-path "c:\tmp\ejemplo\$oldyear\$dir\"))
   {
      New-Item -ItemType Directory -Force -Path "c:\tmp\ejemplo\$oldyear\$dir\"
   }
   #movemos los elementos que cumplan en criterio
   move-item -Path "c:\tmp\ejemplo\$newyear\$dir\F.20.*.pdf" -Destination "c:\tmp\ejemplo\$oldyear\$dir\"  -PassThru
}) 

10 Ficheros más grandes en gigas y mostradndo full path

gci -r | sort -descending -property length | select -first 10 name, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 2)}}, fullname

10 Ficheros mas grandes mostrado en gigas

gci -r | sort -descending -property length | select -first 10 name, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 2)}}

Los diez ficheros mas grandes

gci -r | sort -descending -property length | select -first 10 name, length

delete_files_older_than

$Daysold = 10
$Folder = "c:\windows\temp"

#Borramos los ficheros que haya en la Variable Folder, que sean mas viejos que Daysold
Get-ChildItem $Folder -Recurse -Force -ea 0 |
? {!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-$Daysold)} |
ForEach-Object {
   $_ | del -Force
   $_.FullName | Out-File C:\tmp\deletedlog.txt -Append
}

#Eliniar directorios vacios
Get-ChildItem $Folder -Recurse -Force -ea 0 |
? {$_.PsIsContainer -eq $True} |
? {$_.getfiles().count -eq 0} |
ForEach-Object {
    $_ | del -Force
    $_.FullName | Out-File C:\tmp\deletedlog.txt -Append
}
#Los nombres de los ficheros eliminados los guardamos en C:\tmp\deletedlog.txt por si queremos tracearlo.