文件外问题

时间:2016-11-23 15:56:01

标签: powershell exchange-server

我有这个脚本

ForEach ($u in $usersFromFile)
{
try{
    $nomailbox = if (-not (get-mailbox $u.alias)){   
    $notfound = $notfound + $nomailbox
        Write-host "No mailbox for "$u.alias -F blue|out-file "d:\scripts\nomailbox.txt"}
    }   

Catch{}

没有任何内容写入outfile

我错过了什么?

TIA

安迪

2 个答案:

答案 0 :(得分:0)

如果您使用的PowerShell版本低于5,Out-Host写入主机,就像PetSerAl所说的那样,您应该使用Write-Output。使用PS 5,您可以使用Out-Host来实现以前无法通过Out-Host实现的功能。

答案 1 :(得分:0)

只需使用:

ForEach ($u in $usersFromFile) { try{
    $nomailbox = if (-not (get-mailbox $u.alias)){   
    $notfound = $notfound + $nomailbox
        Write-Output "No mailbox for "$u.alias -F blue|out-file "d:\scripts\nomailbox.txt"}
    }   

Catch{}

这应该有效。但是我认为,如果没有理由你就不会给这条线着色。你也可以使用这个功能:

function writehosttofile {
Param(
 [switch]$para
)
Write-Host "No mailbox for "$u.alias -F blue

if($para){
"No mailbox for " + $u.alias
}

}

writehosttofile -para | out-file "d:\scripts\nomailbox.txt"
  

写主机

     

说明

     

Write-Host将对象发送给主机。它不会返回任何对象。

您还可以浏览到您的脚本并在文件中重定向所有输出:

PS C:\temp> cd c:\bin
PS C:\bin> .\script.ps1 > C:\bin\script_output.txt

度过愉快的一天。