Установка вывода Powershell в переменную - PullRequest
0 голосов
/ 21 декабря 2018

Итак, я работаю над сценарием, в котором переменная будет указывать путь к файлу, затем он получит Get-ChildItem этого пути, и если эти элементы имеют определенный размер, он напечатает вывод этого файла симя файла и размер файла.

Get-ChildItem $file | ? {$_.Length -gt 1mb} | ForEach-Object {Write-Host "Users:" $_.name "have Outlook Data Files larger than 8gb, with a total of" ("{0:N2}" -f($_.length/1mb)) "mb"}

Я пытаюсь присвоить этот вывод переменной, чтобы я мог использовать вторую команду и отправить этот вывод по электронной почте самому себе.Если нет лучшего способа сделать это.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018
$content = gci -Recurse -File | ? { $_.Length -gt 40000 }

Включите $ содержание в текст письма.

0 голосов
/ 22 декабря 2018

Как указывалось в предыдущих комментариях, похоже, что вашей основной проблемой может быть неправильное понимание того, как командлеты Write- * работают в PowerShell.Write-Host выводит данные напрямую на хост / консоль, минуя нормальные потоки вывода PowerShell .Это можно быстро проиллюстрировать, выполнив следующие команды в сеансе PowerShell:

$MyVariable1 = Write-Host "Hello, World!"
$MyVariable2 = Write-Output "Hello, World!"
$MyVariable1
$MyVariable2

Если вы выполните вышеизложенное, вы обнаружите, что $ MyVariable1 не имеет назначенного значения (и вы могли бы на самом деле протестировать его для этогос чем-то вроде $null -eq $MyVariable1), но $ MyVariable2 будет иметь значение «Hello, World!».

Чтобы ваш пример работал, чтобы получить вывод в переменную, вам нужно будет выполнить что-то вроде следующего:

$LargeFiles = Get-ChildItem $file | ? {$_.Length -gt 1mb} | ForEach-Object {Write-Output "Users:" $_.name "have Outlook Data Files larger than 8gb, with a total of" ("{0:N2}" -f($_.length/1mb)) "mb"}

Чтобы узнать больше о выходных потоках PowerShell, вы также можете прочитать статью about_redirection .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...