前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于腾讯云windows更新

关于腾讯云windows更新

原创
作者头像
Windows技术交流
修改2024-03-04 11:53:53
4940
修改2024-03-04 11:53:53
举报
文章被收录于专栏:Windows技术交流

没有公网的机器,内网 windows update参考https://cloud.tencent.com/document/product/213/2758

代码语言:javascript
复制
如果机器有公网,默认不用配啥,用系统自带的更新功能打补丁时自动连微软对公的update server

http://windows-1251783334.cos.ap-shanghai.myqcloud.com/115.159.148.149/windows_update.vbs (原出处的内容可能更新,建议以原出处为准)

该脚本来自微软,原出处:https://learn.microsoft.com/zh-cn/windows/win32/wua_sdk/searching--downloading--and-installing-updates

主要用于实现windows自动更新功能。 在windows机器内直接执行该脚本文件即可,不需要输入任何参数

RebootToComplete以实现更新后重启机器使得更新生效

脚本执行指令如下:cscript windows_update.vbs /RebootToComplete

注意:

(1)必须确保机器可以正常连接windows更新服务器或自定义的相关更新服务器,否则无法实现更新

(2)该脚本执行结束后,机器会重启以保证补丁生效

(3)脚本执行时间取决于补丁大小及网络状况等

另外,了解下使用 WUA 脱机扫描更新

需要提醒的是,不通过winrm,直接在系统里执行cscript.exe "C:\windows_update.vbs"没问题,而通过winrm执行相同命令就会卡在Downloading,报错 Microsoft VBScript 运行时错误: 没有权限

从上到下,依次是.vbs的第362行~第386行

代码语言:javascript
复制
C:\windows_update.vbs(366, 5) Microsoft VBScript 运行时错误: 没有权限
    + CategoryInfo          : NotSpecified: (C:\windows_upda...ipt 运行时错误: 没有权限:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
    + PSComputerName        : 10.255.5.6
NotSpecified: (:) [], RemoteException

通过winrm执行脚本,前365行的功能正常回显,执行到366行报错了,在系统内部直接执行脚本则完全正常

首先需要打通WinRM,默认不支持WinRM

开启WinRM(执行后最好重启下机器)

代码语言:javascript
复制
winrm quickconfig -q 2>&1> $null;winrm quickconfig -q -force 2>&1> $null;netstat -ano|findstr :5985;
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WinRM" /f 2>$null
stop-service mpssvc 2>&1 > $null
winrm quickconfig -q 2>&1 > $null
winrm quickconfig -q -force 2>&1 > $null
restart-service winrm 2>&1 > $null
#Set-Item WSMan:localhost\client\trustedhosts -value * -force 2>&1 > $null
winrm set winrm/config/client '@{TrustedHosts="*"}' 2>&1 > $null
#netstat -ato|findstr :5985

用powershell通过winrm执行脚本

代码语言:javascript
复制
$Username = '.\Administrator'

$Password = '密码'

$pass = ConvertTo-SecureString -AsPlainText $Password -Force

$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass

$iparray = @('10.255.5.6')

for($i=0;$i -lt $iparray.Length;$i++){

"`$iparray["+$i+"]="+$iparray[$i]+"`n"

Invoke-Command -ComputerName $iparray[$i] -Credential $Cred -ScriptBlock { 

cscript.exe "C:\windows_update.vbs";

}

}

能执行到这个层面说明脚本已经真正在执行了,只是执行到Downloading那里报错了

winrm跟系统内部cmd/powershell还是有区别的,有些命令通过winrm并不能达到系统内部cmd/powershell执行命令的效果

我调整思路,用这2行命令替换cscript.exe "C:\windows_update.vbs"

代码语言:javascript
复制
schtasks.exe /create /tn "update" /ru Administrator /rl highest /sc ONLOGON /tr "cscript.exe 'C:\windows_update.vbs'" /f;
schtasks /Run /TN "update";

通过先创建一个计划任务再触发计划任务执行,这样就相当于在远程服务器本机执行命令,如此执行下来确实符合预期,结果正常

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档