我正在运行一个脚本,将文件从本地复制到网络位置。如果我自己通过powershell调用脚本,则该脚本起作用,但不是从Task Scheduler调用。我已经看过这篇文章和许多其他文章,但是我无法使它起作用。现在,我可以查看任务调度程序“上次运行的结果”,它表示该任务当前正在运行几分钟,然后再停止它。当我结束任务时,我什至都没有得到异常(代码在try / catch中)
因为尝试了一些不同的示例,所以将ServerLocation和ServerFullPath分解了。
代码如下(替换了域/用户名/密码):
Set-Variable ServerCredentials -option Constant -value "<domain>/<username> <password>"
Set-Variable ServerLocation -option Constant -value "\\<domain>"
Set-Variable ServerFullPath -option Constant -value $ServerLocation"\path\path"
$latest = Get-ChildItem -Path .\ | Sort-Object LastWriteTime -Descending | Select-Object -First 1
net use $ServerFullPath /user:$ServerCredentials
Copy-Item .\$latest $ServerFullPath -Force
我是PowerShell的新手,有关如何进行故障排除的任何想法?需要更多信息吗?
答案在于“网络使用”的工作方式。在cmd中键入“ net use”表明我已经建立了连接,并且似乎已经有了连接将使net use想要提示,这就是为什么我的脚本挂起的原因。我尝试删除“ Net use * / delete / y”的连接,该连接正好在原始的net use之上,这使脚本可以正确继续。然后看起来像:
Net use * /delete /y
net use $ServerFullPath /user:$ServerCredentialUser $ServerCredentialPassword
此处的关键是\ y末尾,它将对提示进行无提示回答。
顺便说一句,此链接显示了如何使用/ delete参数。我选择在此处使用*,但似乎可以删除该特定连接。
但是,这引发了一些事情,也许是网络使用促使我以某种方式提示我已经存在的连接,所以我将原始行更改为:
net use $ServerFullPath /user:$ServerCredentialUser $ServerCredentialPassword /y
最后加上/ y就可以了,一切都很好:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句