2014-01-22 49 views
0

我想看看是否可以獲得一些幫助,將一些信息寫入日誌文件。在下面的例子中,我使用了echo,但我也嘗試了寫主機。我正在嘗試使用一些文本和逗號以及我的環境變量來獲取CSV文件。它似乎在寫主機的屏幕上工作得很好,但是當我將它轉儲到日誌時,$變量似乎總是下降到下面的行,而不是與引號中的文本保持同一行。創建日誌文件時出現問題

$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 
} 

回答

1

將您的變量放在雙引號內。像這樣:

echo "Hello $dude" >> file.txt 
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; 

FYIWrite-Host不輸出任何信息管道,而只是將文本寫入控制檯。當您使用>>重定向操作符,並且在左側使用Write-Host時,基本上將「無」輸出到目標文件。

ps。我還建議提出比「更改成功但未做更改」更清晰的日誌消息。對於不瞭解該程序正在做什麼的人來說,這會相當困惑。