我想知道是否可以获得一些帮助,将一些信息写入日志文件。在下面的例子中,我使用echo,但我也尝试过write-host。我试图获得一个包含一些文本和逗号的CSV文件,然后是我的环境变量。它似乎在Write-Host的屏幕上运行良好,但是当我将它转储到日志时,$变量似乎总是下降到下面一行,而不是与引号中的文本保持在同一行。
$Dude = "UserName"
Try
{
Set-Mailbox $Dude -AntispamBypassEnabled $true -ErrorAction Stop -WarningVariable Warn
}
Catch
{
echo "Change Failed" $Dude >> c:\scripts\text.log
Exit 2
}
if ($Warn)
{
echo "Change Succeeded, but no changes were made." $Dude >> c:\cripts\text.log
Exit 1
}
else
{
echo "Your change was successful." $Dude >> c:\scripts\text.log
Exit 0
}
答案 0 :(得分:1)
将您的变量放在双引号内。像这样:
echo "Hello $dude" >> file.txt
答案 1 :(得分:1)
echo
只是Write-Output
命令的别名。您正在看到的行为正在发生,因为您正在向文件写出两个不同的对象。第一项是String
,第二项是$Dude
变量(偶然也指向一个字符串)。
为了避免将来出现混淆,我建议首先完整地构建您的日志消息,然后使用以下选项之一将其写入输出文件:
Set-Content
Out-File
[System.IO.File]::AppendAllText()
以下是一个例子:
$LogMessage = '{0}: Operation completed successfully, but no changes were made for user: {1}' -f (Get-Date -Format 'yyyy-MM-dd hh:mm:ss'), $Dude;
Set-Content -Path $PSScriptRoot\Mailboxes.log -Value $LogMessage;
FYI :Write-Host
不向管道输出任何信息,只是将文本写入控制台。当您使用左侧>>
的{{1}}重定向运算符时,您基本上会向目标文件输出“nothing”。
PS。我还建议提出一个比“更改成功,但没有进行任何更改”更清晰的日志消息。对于那些不了解该计划正在做什么的人来说,这会让人感到困惑。