使用Powershell安装Windows补丁

时间:2018-04-20 08:57:28

标签: powershell

我已经在Stackoverflow上尝试了很多提示,但似乎没有任何效果。 如果我运行此代码Window Pops up

PowerShell版本是2.0

我的代码:

$PATH = "S:\User\Person\UPDATES\Update for Windows 7 for x64-based Systems (KB3134760)\AMD64-all-windows6.1-kb3134760-x64_d720851ef4b5a37c1c8bdd2e5bf4c77dcc625e8c.msu"

$SB = {Start-Process -FilePath 'c:\windows\system32\wusa.exe' -ArgumentList ('S:\User\Voss\UPDATES\Update for Windows 7 for x64-based Systems (KB3134760)\AMD64-all-windows6.1-kb3134760-x64_d720851ef4b5a37c1c8bdd2e5bf4c77dcc625e8c.msu','/quiet', '/promtrestart', "/log:S:\User\Voss\UPDATES\Update for Windows 7 for x64-based Systems (KB3134760)\Update.log") -Wait}

$computer = echo (Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name

Invoke-Command -ScriptBlock $SB

1 个答案:

答案 0 :(得分:0)

首先,E.D。 (呵呵)你的拼写错误是正确的。简单的语法错误甚至可以打破最优雅/复杂的脚本。

从我假设的(远程)映射驱动器安装补丁程序会带来很多额外的麻烦。如果您尝试在其他计算机上执行此操作,则需要使用类似psexec或计划任务的内容来启动计算机凭据(NT Authority \ System)下的安装。如果您在机器和机器上执行此操作。

将您的代码分开:

$PATH = "S:\User\Person\UPDATES\Update for Windows 7 for x64-based Systems (KB3134760)\AMD64-all-windows6.1-kb3134760-x64_d720851ef4b5a37c1c8bdd2e5bf4c77dcc625e8c.msu"

$SB = {Start-Process -FilePath 'c:\windows\system32\wusa.exe' -ArgumentList ('S:\User\Voss\UPDATES\Update for Windows 7 for x64-based Systems (KB3134760)\AMD64-all-windows6.1-kb3134760-x64_d720851ef4b5a37c1c8bdd2e5bf4c77dcc625e8c.msu','/quiet', '/promtrestart', "/log:S:\User\Voss\UPDATES\Update for Windows 7 for x64-based Systems (KB3134760)\Update.log") -Wait}

$computer = echo (Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name

Invoke-Command -ScriptBlock $SB

1)我真的不明白你在$ PATH变量中做了什么,因为它没有被其他地方引用。

2)$ SB并非'真的'需要以这种方式分隔,但应该有效。通常情况下,我只是将它设为一个字符串,并在引用其他变量时,使用此语法首先对它们进行求值 - $($ PATH)

3)对于$ computer,你是对的。丢失回声,你应该没问题,因为你只是得到本地机器的名称($ Env:ComputerName也可以正常工作,即使你在另一台机器上运行代码也更经济,恕我直言)

解决您可能在另一台计算机上运行此代码的用例:

您似乎假设您已登录并且您的驱动器映射适用。如果您正在访问网络共享,则需要确保远程计算机具有对共享的读取权限,以便它可以访问相关文件,并且您还希望使用UNC路径以简化清酒。这种情况下最好使用psexec \ -S WUSA \ UNC PATH \ To \ Update \ File.msu。

最重要的是,如果你传达的意图更好一些,我可能会更好地提供帮助。