powershell - 通过电子邮件发送 Powershell 脚本的所有输出

标签 powershell

我有一个 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/

相关文章:

powershell - 字符串中命令的Powershell解析

powershell - 我可以覆盖 Powershell native cmdlet 但从我的覆盖中调用它吗

Powershell 脚本在 Octopus 中失败

bash - 如果程序失败,powershell 脚本将停止(如 bash `set -o errexit` )

powershell - 在 Powershell 中声明哈希表时引用值中的键

PowerShell:在日志文件中搜索字符串的一部分

amazon-web-services - 使用 PowerShell Core 上传到 Amazon S3 存储桶

Powershell:从文件末尾向后搜索

powershell - 拒绝尝试从Powershell启动Appfabric缓存集群的访问

powershell - 如何在不破坏主脚本的情况下用Ctrl + C停止子进程并将子输出流传输到PowerShell中的主脚本?