我有这个脚本
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
安迪
答案 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
度过愉快的一天。