追加时,PowerShell日志记录会停止

时间:2018-01-11 21:07:54

标签: powershell

我有一个非常奇怪的问题。我写了一个脚本,我在注册表中搜索其他电子邮箱。在我找到(只是人名)后,我想将其添加到我的日志文件中,以便使用该脚本的人可以看到它。但是,当我尝试将我的查找附加到我的日志文件时,不仅它不会添加它,而且还会停止记录脚本的其余部分。

以下是我尝试过的事情,结果是一样的。记录停止。

  • 从注册表中获取值作为字符串将其附加到我的日志文件

  • 获取值,将其转换为字符串并追加。

  • 获取值,将其导出到文本文件,在脚本的开头和结尾处执行get-content并追加。
  • 获取值,将其导出到文本文件,在脚本的开头和结尾处执行Add-Content。

我的示例脚本如下。我已经多次改变它,尝试不同的变化,结果相同。

$key = "HKCU:\Software\Microsoft\Office\15.0\Outlook\Profiles\Mail\"
$val = "001f3001"

foreach ($subkey in $key) {
    try {
        $result = [System.Text.Encoding]::Unicode.GetString((gp $key)."001f3001") # tried changing this part to different variations to get the data
        if (($result -match "Microsoft Exchange*") -or ($result -match "Outlook Address Book")) {
            Out-Null
        } else {
            $result | Out-File -Append "C:\temp\r.txt" 
            # tried appending the result to my log file directly here with same result.
        }
    } catch {
        Out-Null
    }
}

"Additional email boxes: "
$mb = Get-Content "C:\temp\r.txt" # tried piping directly to the log file with same result. 
$mb | Out-File -Append $logfile -Force

我的日志文件显示所有内容,直到我将结果附加到其中并停止。

.....log starts.....
.....
.....
.....
Additional email boxes: 
======= log files stop =====

我的r.text文件包含我正在寻找的所有值。

更新 我注意到如果我将文件保存为" .log"我什么也看不见。任何其他扩展名.txt,.csv等我可以看到内容,但仍然无法将其附加到我的日志文件中。

1 个答案:

答案 0 :(得分:1)

如果您没有明确提供参数名-FilePath,则必须将FilePath参数放在第一个位置。

请阅读Out-File的帮助:

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/out-file?view=powershell-5.1