从本地服务帐户

时间:2018-03-03 20:42:59

标签: powershell download

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

它工作得非常好,但它不能在Windows 7计算机上运行,​​因为它们有PowerShell 2.因为我拥有与win 10一样多的Windows 7个,我需要找到另一种方式。

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

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)

如果您的脚本的过程暂时不会出现,那么这可能很好,但是如果您将其整合到更大规模的内容中,请记住这一点。