Running a command on each directory in a list using PowerShell
You don't need to set the location, you just just provide paths to 7z.exe. Also, 7zip does not compress to Rar, only decompress.
$dir = dir d:\directory | ?{$_.PSISContainer}foreach ($d in $dir){ $name = Join-Path -Path $d.FullName -ChildPath ($d.Name + ".7z") $path = Join-Path -Path $d.FullName -ChildPath "*" & "C:\Program Files\7-Zip\7z.exe" a -t7z $name $path}
If you don't want to remove the logs after zipping it, comment out the 3rd line
function zip-log { Compress-Archive *.log Logs.zip Get-Item *.log | Remove-Item -Force }$dir = Get-ChildItem d:\directory| ? {$_.PSIsContainer}$dir | ForEach-Object {Set-Location $_.FullName; zip-log}