1

我正在运行一个脚本来将文件从本地复制到网络位置。如果我通过 powershell 自己调用脚本,但不能从任务计划程序调用,该脚本可以工作。我看过这篇文章和许多其他文章,但我无法让它发挥作用。现在我可以查看任务调度程序“上次运行结果”,它说任务当前正在运行几分钟,然后我才停止它。当我结束任务时,我什至没有收到异常(代码在 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的新手,对如何进行故障排除有任何想法吗?需要更多信息吗?

4

1 回答 1

0

答案在于“净使用”是如何工作的。在 cmd 中输入“net use”表明我已经建立了连接,并且似乎已经建立了连接会使 net use 想要提示,这就是为什么我的脚本似乎挂起的原因。我尝试删除与“Net use * /delete /y”的连接,就在原始网络使用的上方,这使得脚本能够正确继续。然后看起来像:

Net use * /delete /y
net use $ServerFullPath /user:$ServerCredentialUser $ServerCredentialPassword

这里的关键是末尾的 \y,它将默默地回答提示是。

顺便说一句,此链接显示了如何使用 /delete 参数。我选择在这里使用 *,但似乎我可以删除该特定连接。

然而,这引发了一些可能 net use 以某种方式提示我已经存在的连接,所以我将原始行更改为:

net use $ServerFullPath /user:$ServerCredentialUser $ServerCredentialPassword /y

加上 /y 最后它工作得很好,一切都很好:)

于 2015-05-15T23:10:31.850 回答