我有一个avaya CMS脚本,它是用来提取团队数据的,这样它就可以导入到Power中。脚本运行良好,但我必须每月在记事本++中手动编辑该文件,以便它导出到一个新的文件名,并获得正确的日期报告。我正在尝试编写一个Powershell脚本,它将自动更新Avaya脚本中的相关信息,并运行Avaya脚本来输出我的数据。我编写的powershell脚本看起来很有效,它输出一个Avaya脚本,该脚本与我原来的工作脚本完全匹配,在notepad++中查看时每个字符都匹配。但是,输出的脚本不会在Avaya中运行。我还注意到,当原始文件为3KB时,文件大小为6KB。但从记事本上看,并没有任何差别。我的powershell脚本中有什么东西破坏了Avaya脚本吗?将下面的脚本作为参考。
Power Shell脚本:
$content = Get-Content -path "C:\Users\MM24363\OneDrive - MassMutual\QA\Tools scripts etc\power bi export file test.acsauto" -Raw
$month = get-date -format "MM"
$day = get-date -format "dd"
$year = get-date -format "yyyy"
$today = get-date
$lastday = [DateTime]::DaysInMonth($today.year, $today.Month)
$datesstart = $content.LastIndexof("Dates")
$datesstart = $datesstart +8
$datessub = $content.Substring($datesstart,21)
$quote = write-output '"'
$datesnew = Write-Output "$month/1/$year-$month/$lastday/$year$quote"
$content.replace($datessub,$datesnew) > "C:\Users\MM24363\OneDrive - MassMutual\QA\Tools scripts etc\powershell scripting target.acsauto"
$content = Get-Content -path "C:\Users\MM24363\OneDrive - MassMutual\QA\Tools scripts etc\powershell scripting target.acsauto" -Raw
$pathstart = $content.lastindexof("Stats\")
$pathstart = $pathstart +6
$pathsub = $content.substring($pathstart,7)
$pathnew = write-output "$month-$year"
$content.replace($pathsub,$pathnew) > "C:\Users\MM24363\OneDrive - MassMutual\QA\Tools scripts etc\powershell scripting target.acsauto"
$retro=(get-date).date.addmonths(-1)
$lastmonth = $retro.tostring("MM")
$lastmonthyear = $retro.year
$content = Get-Content -path "C:\Users\MM24363\OneDrive - MassMutual\QA\Tools scripts etc\powershell scripting target.acsauto" -Raw
$lmpathnew = write-output "$lastmonth-$lastmonthyear"
$endoflastmonth = (Get-Date -Day 1).AddDays(-1).ToString("dd")
$lmdatenew = write-Output "$lastmonth/1/$lastmonthyear-$lastmonth/$endoflastmonth/$lastmonthyear"
$content.replace($pathnew,$lmpathnew).replace($datesnew,$lmdatenew) > "C:\Users\MM24363\OneDrive - MassMutual\QA\Tools scripts etc\last month.acsauto"Avaya脚本
'LANGUAGE=ENU
'SERVERNAME=170.6.243.18
Public Sub Main()
'## cvs_cmd_begin
'## ID = 2001
'## Description = "Report: Historical: Designer: Field Group Daily Summary: Export Data"
'## Parameters.Add "Report: Historical: Designer: Field Group Daily Summary: Export Data","_Desc"
'## Parameters.Add "Reports","_Catalog"
'## Parameters.Add "2","_Action"
'## Parameters.Add "1","_Quit"
'## Parameters.Add "Historical\Designer\Field Group Daily Summary","_Report"
'## Parameters.Add "1","_ACD"
'## Parameters.Add "-180","_Top"
'## Parameters.Add "255","_Left"
'## Parameters.Add "28335","_Width"
'## Parameters.Add "16575","_Height"
'## Parameters.Add "default","_TimeZone"
'## Parameters.Add "The report Historical\Designer\Field Group Daily Summary was not found on ACD 1.","_ReportNotFound"
'## Parameters.Add "*","_BeginProperties"
'## Parameters.Add "Erroll Team","Agent Group"
'## Parameters.Add "6/1/2022-6/30/2022","Dates"
'## Parameters.Add "*","_EndProperties"
'## Parameters.Add "*","_BeginViews"
'## Parameters.Add "*","_EndViews"
'## Parameters.Add "C:\Users\mm24363\OneDrive - MassMutual\QA\Avaya Reportin\june export.csv","_Output"
'## Parameters.Add "9","_FldSep"
'## Parameters.Add "0","_TextDelim"
'## Parameters.Add "True","_NullToZero"
'## Parameters.Add "True","_Labels"
'## Parameters.Add "False","_DurSecs"
On Error Resume Next
cvsSrv.Reports.ACD = 1
Set Info = cvsSrv.Reports.Reports("Historical\Designer\Field Group Daily Summary")
If Info Is Nothing Then
If cvsSrv.Interactive Then
MsgBox "The report Historical\Designer\Field Group Daily Summary was not found on ACD 1.", vbCritical Or vbOKOnly, "Avaya CMS Supervisor"
Else
Set Log = CreateObject("ACSERR.cvsLog")
Log.AutoLogWrite "The report Historical\Designer\Field Group Daily Summary was not found on ACD 1."
Set Log = Nothing
End If
Else
b = cvsSrv.Reports.CreateReport(Info,Rep)
If b Then
Rep.Window.Top = -180
Rep.Window.Left = 255
Rep.Window.Width = 28335
Rep.Window.Height = 16575
Rep.TimeZone = "default"
Rep.SetProperty "Agent Group","Erroll Team"
Rep.SetProperty "Dates","07/1/2022-07/31/2022"
b = Rep.ExportData("C:\Users\mm24363\OneDrive - MassMutual\Brians Folder\Field Individual Avaya Stats\07-2022 export.csv", 9, 0, True, True, False)
Rep.Quit
If Not cvsSrv.Interactive Then cvsSrv.ActiveTasks.Remove Rep.TaskID
Set Rep = Nothing
End If
End If
Set Info = Nothing
'## cvs_cmd_end
End Sub发布于 2022-09-12 21:49:45
@TheMadTechnician -谢谢,这就是问题所在。Powershell在将文件读入字符串时没有问题,所以我从来没有想到过,可能会出现编码问题。工作脚本使用UTF-8,而powershell在UTF-16 LE BOM中输出。我在脚本的开头添加了一行,以将默认值更改为UTF-8,现在输出脚本按预期运行。谢谢。
发布于 2022-09-10 14:58:02
在不运行脚本的情况下,我建议您每次退出变量.setProperty,直到您发现是什么破坏了代码。我发现日期(日期格式或日期作为字符串)将破坏脚本。
发布于 2022-09-11 18:10:41
尝试修改标准acsauto文件,并在“‘cmd”文件中运行它,将其作为午夜后的计划任务来获取昨天的数据。我这么做已经好几年了。我使用Escel将输出txt文件导入Excel。
我要做的是:
file1,file2,rpt,dpath1,dpath2,msg,stdt
下一个错误恢复
*
“硬代码输出文件”路径
dpath1 ="yourpath1“
dpath2="yourpath2“
*
昨天=-1‘
stdt=dateadd("d",dy,日期)
Yyyy=cstr(年份)
Mm=cstr(月份)
如果len( mm )=1,则mm="0“&mm
Dd=cstr(日)
如果len( dd )=1,则dd="0“&dd
file1=dpath1 & "spsk_1-99_“& yyyy & mm & dd & ".txt”
file2=dpath2 & "spsk_1-99_“& yyyy & mm & dd & ".txt”
‘'msgbox file1’测试时不要评论
测试时不要评论,这样就不会让cms抓狂
*
Rep.SetProperty“Date”,dy
‘
“多技能数据”"1-99“:00:00-23:30
Rep.SetProperty "Splits/Skills","1-99"‘
Rep.SetProperty“时代”,"00:00-23:30“
Rep.ReportView.Add“0,0,0;0,2,0”,"Grid1“‘
‘将输出作为文本发送到两个文件,选项卡分隔,没有引号,时间持续时间为秒
b = Rep.ExportData(file1, 9, 0, True, True, True)‘B= Rep.ExportData(file2,9,0,True,True,True)
Rep.Quit“如果不是cvsSrv.Interactive,那么cvsSrv.ActiveTasks.Remove Rep.TaskID
https://stackoverflow.com/questions/73115348
复制相似问题