我有一个 Powershell 脚本,它循环访问多个文件并将文件信息写入控制台。屏幕上输出的正是我需要通过电子邮件发送的内容。
电子邮件部分很简单,但我不知道如何捕获发送到屏幕的内容并将其发送到正文中。这是相关代码。只有第一次迭代才会存储在 $emailbody 变量中。
编辑示例:
$backupLocations = #List of paths#
$emailBody=""
$currentFile = "nothing"
foreach ($loc in $backupLocations) {
$files = get-childitem "$loc\\*" -recurse -include *.bak
foreach ($file in $files) {
if (test-path $file) {
$prop = Get-ItemProperty -Path "$file"
Write-Output $prop | tee-Object -variable $currentFile
$emailBody += $currentFile
}
}
}
# Code to send $emailBody in an email. That is working fine.#
我在屏幕上看到的是包含文件信息的页面,如下所示:
Directory: \\directory\directory\directory\myfolder
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/10/2011 10:00 PM 1986048 file.bak
诚然,我没有 RTFM,并且基本上已经通过 Powershell 破解了这一点,所以如果答案是显而易见的,请原谅我。
最佳答案
你不应该尝试这样的事情:
$emailBody=""
foreach ($file in $files) {
if ($file) {
$prop = Get-ItemProperty -Path "$file"
Write-Output $prop | tee-Object -Variable currentFile
$emailBody += $currentFile
}
}
不过,有更好的方法来做你正在做的事情。因此,如果您可以提供有关 $files 是什么以及您是否真的想输出到控制台等详细信息,我们可以查看更好的脚本。
更新后:
像下面这样的东西不适合你吗:
$files = gci "$loc\\*" -recurse -include *.bak
Write-Host $files
$emailBody = $files | ft
我认为不需要其他任何东西!就像 test-path
- 为什么?你做的是gci,当然存在!
关于powershell - 通过电子邮件发送 Powershell 脚本的所有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5969638/