创建日志文件时遇到问题

时间:2014-01-22 17:39:03

标签: powershell scripting

我想知道是否可以获得一些帮助,将一些信息写入日志文件。在下面的例子中,我使用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
 } 

2 个答案:

答案 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。我还建议提出一个比“更改成功,但没有进行任何更改”更清晰的日志消息。对于那些不了解该计划正在做什么的人来说,这会让人感到困惑。