Powershell получает размеры папок с сортировкой на удаленном компьютере, используя psexec и oneliner
Мне нужно получить размеры папок на удаленном компьютере, используя psexec (команда ограничена 255 символами).
Основные вещи:
- psexec [ограничение до 255 символов] - oneliner
- PowerShell выполнен из CMD
- сортировать по байтам
- исключить значения ниже, чем в МБ
Мне удалось сделать это таким образом (без сортировки / больше, чем):
powershell -exe bypass -c "gci -Force | ?{ $_.PSIsContainer } | ForEach-Object { $_.Name + ': ' + '{0:N2} MB' -f ((gci $_ -Recurse -ErrorAction SilentlyContinue | Measure-Object -ErrorAction SilentlyContinue Length -Sum ).Sum / 1MB)}"
Но я также хочу отсортировать по байтам вывод и / или исключить папки с размером меньше (или, по крайней мере, начиная с 0, хх).
Спасибо за помощь.
--------- ОБНОВИТЬ ---------
Слишком плохая команда (приведенная ниже в ответе), выполняемая удаленно, выдает много ошибок и не справляется хорошо. У меня есть другая команда, которая работает на всех системах, но не знаю, как отсортировать вывод по байту / второму столбцу и не превышает 255 символов.
Вот команда [ 234 символа]:
powershell -exe bypass -c "gci -Force | ?{ $_.PSIsContainer } | ForEach-Object { $_.Name + ': ' + '{0:N2} MB' -f ((gci $_ -Recurse -ErrorAction SilentlyContinue | Measure-Object -ErrorAction SilentlyContinue Length -Sum ).Sum / 1MB)}"
И более короткая версия [ 173 символа]:
powershell -exe bypass -c "gci -Force | ?{ $_.PSIsContainer } | % { $_.Name + ': ' + '{0:N2} MB' -f ((gci $_ -Recurse -EA 0 | Measure-Object -EA 0 Length -Sum ).Sum / 1MB)}"
У кого-нибудь есть идеи, как это решить?
1 ответ
Хорошо, я наконец сделал это, с номером файла тоже:
powershell -exe bypass -c "gci -Dir | % { $F = gci $_.FullName -Recurse -File ; $Size = '{0:F2}' -f (( $F | Measure -Property Length -Sum).Sum /1MB) ; [PSCustomObject]@{Dir = $_.FullName ; '#' = "$($F.Count)" ; Size = $Size} } | sort {[int]$_.Size} -des"
Может это кому-нибудь пригодится:)
Привет