从本地服务帐户运行BitsTransfer

问题描述 投票:1回答:2

我正在制作一些脚本,以使我的工作更容易一些。我需要的一件事是下载一些文件来使用。我首先使用命令Invoke-WebRequest使用powershell。

它工作得很好,但是它不能在Windows 7计算机上运行,​​因为它们有powershell 2.因为我有尽可能多的Windows 7个人的胜利10我需要找到另一种方式。

我发现Start-BitsTransfer是一种适用于大多数计算机的好方法。我现在的问题是,当通过我的远程支持会话使用脚本时,它在本地服务帐户上运行脚本,然后BitsTransfer不会运行并给我一个错误。 (0x800704DD)

有没有办法解决这个问题,或者可以在win 7和10上使用并从本地服务帐户运行的任何命令?

powershell download
2个回答
0
投票

我也同意你不应该继续支持PowerShell 2.0。理想情况下,抛弃Windows 7(它现在太旧了),如果你不能这样做,升级PowerShell,如果你不能这样做,找一份新工作,如果你不能这样做,那么我猜解决方法!

postanote's answer covers the BITS angle

你可以做的另一件事就是使用.Net框架的底层库,这正是Invoke-RestMethodInvoke-WebRequest所做的(这些cmdlet是在PowerShell 3.0中引入的,但它们的内容要长得多)。

try {
    $wc = New-Object -TypeName System.Net.WebClient
    $wc.DownloadFile($url, $path)
finally {
    $wc.Dispose()
}

大多数人都不打扰在PowerShell中处理IDisposable对象,所以你会看到很多这样的简写:

(New-Object Net.WebClient).DownloadFile($url, $path)

如果你的脚本的过程不会出现一段时间,这可能就好了,但是如果你把它整合到更大规模的东西中,最好记住。


1
投票

您应该更新PowerShell作为gms0ulman状态,但如果您不是负责此决定的人,则必须采取其他步骤。

这个错误代码......

0x800704DD

出现错误消息ERROR_NOT_LOGGED_ON,因为系统事件通知服务(SENS)未收到用户登录通知。 BITS(版本2.0及更高版本)取决于来自服务控制管理器的登录通知,而后者又取决于SENS服务。确保SENS服务已启动并正常运行。

默认情况下,BITS在LocalSystem帐户下运行。要修改,停止或重新启动BITS,您必须以管理员身份登录。在您的情况下,当您登录常规帐户并以提升权限启动PS时,BITS不会在常规用户帐户下运行。要解决此问题,您可能需要为BITS配置登录用户。请访问以下链接以配置服务的启动方式。

配置服务的启动方式

服务通常使用默认设置运行 - 例如,服务可能会在启动时自动禁用。但是,您可以使用“服务”管理单元更改服务的默认设置。如果要对服务故障进行故障排除,或者需要更改运行服务的安全帐户,这将非常有用。帐户操作员或域管理员,企业管理员或同等人员的成员身份是完成此过程所需的最低要求。查看本主题中“其他注意事项”中的详细信息。

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc755249(v=ws.10)

© www.soinside.com 2019 - 2024. All rights reserved.