我正在制作一些脚本,以使我的工作更容易一些。 我需要的一件事是下载一些文件来使用。我首先使用命令Invoke-WebRequest使用powershell。
它工作得非常好,但它不能在Windows 7计算机上运行,因为它们有PowerShell 2.因为我拥有与win 10一样多的Windows 7个,我需要找到另一种方式。
我发现Start-BitsTransfer是一种适用于大多数计算机的好方法。我现在的问题是,当通过我的远程支持会话使用脚本时,它在本地服务帐户上运行脚本,然后BitsTransfer不会运行并给我一个错误。 (0x800704DD)
有没有办法解决这个问题,或者可以在win 7和10上使用并从本地服务帐户运行的任何命令?
答案 0 :(得分:1)
您应该将PowerShell更新为gms0ulman个州,但如果您不是负责此决定的人,则必须采取其他措施。
此错误代码......
0x800704DD
出现错误消息ERROR_NOT_LOGGED_ON,因为系统事件通知服务(SENS)未收到用户登录通知。 BITS(版本2.0及更高版本)取决于来自服务控制管理器的登录通知,而后者又取决于SENS服务。确保SENS服务已启动并正常运行。
默认情况下,BITS在LocalSystem帐户下运行。要修改,停止或重新启动BITS,您必须以管理员身份登录。在您的情况下,当您登录常规帐户并以提升权限启动PS时,BITS不会在常规用户帐户下运行。要解决此问题,您可能需要为BITS配置登录用户。请访问以下链接以配置服务的启动方式。
配置服务的启动方式
服务通常使用默认设置运行 - 例如,服务 可能在启动时自动禁用。但是,你可以使用 服务管理单元以更改服务的默认设置。这是 如果您正在排除服务故障或需要,则非常有用 更改运行服务的安全帐户。会员资格 帐户操作员或域管理员,企业管理员或同等人员, 是完成此过程所需的最低要求。查看详细信息 在"其他考虑因素"在这个主题中。
答案 1 :(得分:0)
我也同意您不应该继续支持PowerShell 2.0。理想情况下,抛弃Windows 7(它现在太旧了),如果你不能这样做,升级PowerShell,如果你不能这样做,找一份新工作,如果你不能这样做,那么我猜解决方法!
postanote's answer covers the BITS angle
你可以做的另一件事就是使用.Net框架的底层库,这正是Invoke-RestMethod
和Invoke-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)
如果您的脚本的过程暂时不会出现,那么这可能很好,但是如果您将其整合到更大规模的内容中,请记住这一点。