首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Powershell修改Avaya脚本(.acsauto),生成的脚本将无法运行

使用Powershell修改Avaya脚本(.acsauto),生成的脚本将无法运行
EN

Stack Overflow用户
提问于 2022-07-25 21:05:47
回答 3查看 188关注 0票数 0

我有一个avaya CMS脚本,它是用来提取团队数据的,这样它就可以导入到Power中。脚本运行良好,但我必须每月在记事本++中手动编辑该文件,以便它导出到一个新的文件名,并获得正确的日期报告。我正在尝试编写一个Powershell脚本,它将自动更新Avaya脚本中的相关信息,并运行Avaya脚本来输出我的数据。我编写的powershell脚本看起来很有效,它输出一个Avaya脚本,该脚本与我原来的工作脚本完全匹配,在notepad++中查看时每个字符都匹配。但是,输出的脚本不会在Avaya中运行。我还注意到,当原始文件为3KB时,文件大小为6KB。但从记事本上看,并没有任何差别。我的powershell脚本中有什么东西破坏了Avaya脚本吗?将下面的脚本作为参考。

Power Shell脚本:

代码语言:javascript
复制
$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脚本

代码语言:javascript
复制
'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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-09-12 21:49:45

@TheMadTechnician -谢谢,这就是问题所在。Powershell在将文件读入字符串时没有问题,所以我从来没有想到过,可能会出现编码问题。工作脚本使用UTF-8,而powershell在UTF-16 LE BOM中输出。我在脚本的开头添加了一行,以将默认值更改为UTF-8,现在输出脚本按预期运行。谢谢。

票数 0
EN

Stack Overflow用户

发布于 2022-09-10 14:58:02

在不运行脚本的情况下,我建议您每次退出变量.setProperty,直到您发现是什么破坏了代码。我发现日期(日期格式或日期作为字符串)将破坏脚本。

票数 0
EN

Stack Overflow用户

发布于 2022-09-11 18:10:41

尝试修改标准acsauto文件,并在“‘cmd”文件中运行它,将其作为午夜后的计划任务来获取昨天的数据。我这么做已经好几年了。我使用Escel将输出txt文件导入Excel。

我要做的是:

  1. 声明变量,即使没有选项显式

file1,file2,rpt,dpath1,dpath2,msg,stdt

下一个错误恢复

*

  1. 在“立即恢复错误”之后插入此类型代码,以制定路径和昨天日期命名的输出文件

“硬代码输出文件”路径

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抓狂

*

  1. 报告昨天的日期= dy

Rep.SetProperty“Date”,dy

“多技能数据”"1-99“:00:00-23:30

代码语言:javascript
复制
      Rep.SetProperty "Splits/Skills","1-99"

Rep.SetProperty“时代”,"00:00-23:30“

Rep.ReportView.Add“0,0,0;0,2,0”,"Grid1“‘

‘将输出作为文本发送到两个文件,选项卡分隔,没有引号,时间持续时间为秒

代码语言:javascript
复制
      b = Rep.ExportData(file1, 9, 0, True, True, True)

‘B= Rep.ExportData(file2,9,0,True,True,True)

代码语言:javascript
复制
      Rep.Quit

“如果不是cvsSrv.Interactive,那么cvsSrv.ActiveTasks.Remove Rep.TaskID

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73115348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档