我有一台 Windows 2008 R2 传真服务器,并且有几个标准域用户发送传真,但大多数传真都是通过驻留在传真服务器上并以管理权限运行的 Web 应用程序自动发送的。
但我需要管理所有传真用户帐户,确保传真已发送。我更愿意使用非管理员用户的 Windows 传真和扫描应用程序。标准用户,但他们可以“重新发送”或“取消”错误传真。
在传真服务器(WORKGROUP 非域)上,我创建了一个安全组“传真高级用户”...添加了一个标准用户,我希望该用户能够管理和查看所有传真,并授予他们完全控制权。位于普通“传真用户”安全组之上。
问题是,这个传真高级用户可以通过 Windows 7 中的 Windows 扫描和传真进行连接……但他们只能看到自己的传真,而看不到其他人的传真。
我是不是漏掉了某个步骤?有可能吗?我是否需要寻找第三方解决方案?
简单的方法是让此 Power Fax 用户使用在 Web 应用程序/传真服务器上创建传真的管理员帐户连接到传真服务器.....但这不利于安全性。
笔记:一直在尝试使用系统日志代理来监控传真服务器 output.log 并发送电子邮件警报,但似乎有点绕。窗口事件含糊不清,无法发送任何相关信息以允许标准用户在传真队列中进行调整。
答案1
要查看服务器上所有用户传真活动,您可以执行以下操作: 首先启用传真服务器的活动日志记录,
打开传真服务管理器。
- 在左窗格中,右键单击“传真”,然后单击“属性”。
- 在活动日志记录选项卡上,选中记录传入传真活动复选框以开始记录传入传真,并选中记录传出传真活动复选框以开始记录传出传真。
可选的是,您可能还想设置存档限制并设置日志记录长度的规则。
其次,使用以下脚本: 然后,我修改了我找到的一个 powershell 脚本:该脚本导入制表符分隔的传真文本文件并创建一个 csv 文件。并按“提交日期”和“状态”/“传输错误”对内容进行排序。然后,它将 csv 文件导出为 html 文件,然后将其复制到 IIS Web 服务器供用户查看。我每小时运行一次计划任务。
笔记:TabDelimited 文件包含 50 列,但 Powershell 在将所有 50 列导出为 html 时遇到问题。50 是最大限制,但我必须选择 49 列才能使其正常工作。
以下脚本比较粗糙,可以改进,但对我来说已经足够了。原始 powershell 脚本可以在这里找到这里。
# This script takes the outboxlog.txt file from the Windows Server fax service
# and parses it to find faxes that did not complete. Results are dumped as a
# Web page. Normally a user can view only the status of their own faxes.
# This allows you to view failed faxes for any user.
# This script can be run as a scheduled task to provide a constantly updated list
# Required command line in scheduled task is:
# powershell.exe "& 'C:\ProgramData\Microsoft\Windows NT\MSFax\ActivityLog\ParseOutbox.ps1'"
# Created by Byron Wright, [email protected]
# Define the file locations used.
$Source="C:\ProgramData\Microsoft\Windows NT\MSFax\ActivityLog\outboxLog.txt"
$TempSource="C:\ProgramData\Microsoft\Windows NT\MSFax\ActivityLog\outboxlogtemp.txt"
$CsvDestination="C:\ProgramData\Microsoft\Windows NT\MSFax\ActivityLog\outboxlog.csv"
$HTMLDestination="C:\inetpub\wwwroot\FailedFaxes.htm"
# Import-TabDelimited function taken from The PowerShell Guy
# Source located at http://thepowershellguy.com/blogs/posh/archive/2007/03/31/powershell-examples-used-on-ars-technica.aspx
function Import-TabDelimited ($Path) {
gc $path |% {$header = $true} {
if ($header){
$h = $_.split("`t")
$header = $false
}
Else {
$r = new-object object
$_.split("`t") |% {$i=0}{
$r | add-Member -memberType noteProperty -name $h[$i] -value $_
$i++
}
$r
}
}
}
#Processing the text file may lock it and cause problems on a busy fax server
#So, copy it quick.
Copy-Item -Path $Source -Destination $TempSource
#Convert to Outboxlog.txt to a csv file
Import-TabDelimited -Path $TempSource | Export-csv -Path $CsvDestination -NoTypeInformation
#Get a list of faxes that failed by looking at the Status column
#Note that the column name includes double quote. Single quotes used to allow that.
$BadFaxes=import-csv -Path $CsvDestination | where {$_.'"Status"' -eq '"Transmission Error"'} | Sort-Object {[datetime] $_.'"SubmissionTime"'} -descending
#Dump bad faxes to an HTML file. The Select-Object cmdlet is selecting the columns to include.
#Again note that double quotes are part of the column name.
# "JobID" "ParentJobID" "SubmissionTime" "Scheduled" "Status" "ErrorDesc" "ErrorCode" "StartTime" "EndTime"
# "Device" "DialedNumber" "CSID" "TSID" "Pages" "TotalPages" "QueueFileName" "Document" "FileSize" "Retries"
# "ServerCoverPage" "CoverPageSubject" "CoverPageNote" "UserName" "SenderName" "SenderFaxNumber"
# "SenderCompany" "SenderStreet" "SenderCity" "SenderZipCode" "SenderCountry/Region" "SenderTitle"
# "SenderDepartment" "SenderOffice" "SenderHomePhone" "SenderOfficePhone" "SenderEMail" "RecipientName"
# "RecipientFaxNumber" "RecipientCompany" "RecipientStreet" "RecipientCity" "RecipientZipCode" "RecipientCountry/Region"
# "RecipientTitle" "RecipientDepartment" "RecipientOffice" "RecipientHomePhone" "RecipientOfficePhone"
# "RecipientEMail" "BillingCode"
$Header = @"
<style>
TABLE {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
TH {border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color: #6495ED;}
TD {border-width: 1px;padding: 3px;border-style: solid;border-color: black;}
</style>
"@
$Pre = "<H1>Failed Faxes: $(Get-Date -format 'g')</H1>"
$Post = "<H3>$(Get-Date -format 'g')</H3>"
$BadFaxes | Select-Object '"SubmissionTime"','"RecipientName"','"RecipientFaxNumber"','"CoverPageSubject"','"Retries"','"ErrorDesc"' | ConvertTo-HTML -Body $Header -PreContent $Pre -PostContent $Post | Out-File -FilePath $HTMLDestination
答案2
该错误在 2008R2 中已得到更正,可以查看发送箱。
您无法在 Windows Server 2008 R2 中查看或管理外发传真
在客户端,为了在 Windows 7 中正确查看该框,您可能需要:
使用传真服务扩展 COM API 的应用程序仅枚举 Windows 7 或 Windows Server 2008 R2 中当前用户帐户的传真作业
“FaxEnumJobs”函数不会枚举 Windows Server 2008 R2 或 Windows 7 中的所有传真作业
在 Windows 8 和 + 上,包含这些修复。
谢谢