[英]Powershell Script Will not Run upon Open or Pass Parameter from Task Scheduler
[英]Powershell script run from task scheduler unable to open word document
我正在尝试使用Powershell脚本从多个Word文件中获取单词计数,然后将其输出到CSV文件。 从powershell提示符运行时,此方法可以按预期工作,而从cmd提示符直接或从perl脚本中调用时,此方法可以工作,但是当作为计划任务调用时,脚本无法工作。
这不是 ExecutionPolicy问题,不会导致脚本完全不运行。 该脚本正在运行并产生一些输出,但是从任务计划程序启动时,它无法打开任何Word文档。
相关的PowerShell代码如下:
$folderpath = "C:\some\where\*"
$fileTypes = "*.docx"
$word = New-Object -ComObject word.application
$word.visible = $false
Get-ChildItem -path $folderpath -recurse -include $fileTypes |
foreach-object `
{
$path = ($_.fullname).substring(0,($_.FullName).lastindexOf("."))
try {
$doc = $word.documents.open($_.fullname, $confirmConversion, $readOnly, $addToRecent, $passwordDocument)
} catch {
"FROM CATCH UNABLE TO OPEN $($_.fullname)" >> $wordCountFile
}
if($doc) {
$wordCount = $doc.ComputeStatistics("wdStatisticWords")
"$($_.name), $wordCount" >> $wordCountFile
$doc.close([ref]$false)
} else {
"UNABLE TO OPEN $($_.fullname)" >> $wordCountFile
}
} #end Foreach-Object
$word.Quit()
(请注意,人们引用的其他方法从单词文档中获取单词计数实际上并没有像此方法工作时那样返回正确的计数。)
当作为计划任务运行(设置为以最高特权并以管理员用户身份运行)时,请使用:
cmd /c start PowerShell.exe -NoLogo -NonInteractive -ExecutionPolicy Bypass -File "C:\path\to\script\CountsInWords.ps1"
或在计划任务启动的perl脚本中使用类似命令运行时(我的正常使用情况),并且在两种情况下,都将任务设置为以最高特权运行时,powershell脚本无法正常工作。
显然,从来没有到达catch块,因为print语句从不进入文件,但是$ doc始终为空。
另外,当作为任务启动时,脚本将打开单词处理程序,并为1个线程使用100%cpu,这最终会削弱我的计算机。
总结一下:
以人工方式运行脚本(无论有多少间接级别)->完美运行
从任务运行脚本(以管理员用户身份)->脚本运行但无法访问Word文档,即使总是按$ word.Quit行也无法停止单词处理。
编辑:使用@TheMadTechnician有关为新用户首次启动办公室的建议时,需要一些详细信息:在进一步检查中,查看任务管理器中的流程,除非单击“显示所有用户的流程”,否则我看不到流程一词。 ,但随后出现,但列出了该用户。 如何将一个进程既明确地列为我,又算作另一个用户?
尝试在脚本中设置$word.visible = $true
时,从任务计划程序启动时实际上没有任何显示,因此,我既不知道如何验证它正在等待输入,又不知道如何为它提供输入作为使它消失的正确用户...
您也许可以按照问题“ 如何与桌面交互”从计划程序运行Windows 2008任务中命名的解决方案进行操作。
摘要:如果您具有64位Windows:创建%SystemRoot%\\SysWOW64\\config\\systemprofile\\Desktop
。 如果您使用32位Windows,请创建%SystemRoot%\\system32\\config\\systemprofile\\Desktop
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.