如何使用PowerShell远程(WinRM)修补SharePoint?

wvmv3b1j  于 2023-03-18  发布在  Shell
关注(0)|答案(2)|浏览(122)

有很多关于使用PowerShell修补Windows的材料,还有一些关于远程修补的。
优化/稳定SharePoint修补程序时,应分批次应用。
1.操作系统修补程序

  1. SQL修补程序
  2. SharePoint修补程序
    为了极大地简化要应用的补丁的选择,我使用了PS Gallery - PSWindowsUpdate模块。
    但是,SharePoint的大多数修补程序必须以交互方式运行,这可以使用Scheduled Tasks来实现。但这通常需要具有适当权限的用户在本地登录,这与远程脚本的用途不符:/
    但是我记得设置了S4U,Service For User,这应该可以绕过这个要求,但是,我似乎找不到正确的参数。
    我确实认为S4U被阻止访问网络(尽管其他来源的说法并非如此),所以我已经尝试确保补丁预先下载,或者使用内置的WindowsUpdateProviderPSWindowsUpdate
    当然,用于运行计划任务的帐户还需要系统权限Logon as batch job
    在我的例子中,有一件事可能会出错,那就是遗留RPC必须在整个网络中保持禁用状态。
Invoke-Command -ComputerName RemoteSrv -ScriptBlock {
  $SoftwareUpdates = Start-WUScan -SearchCriteria "Type='Software' AND IsInstalled =0"
  Install-WUUpdates -Updates $SoftwareUpdates -DownloadOnly $true | Out-Null

  $Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddYears(10)

  $Argument = "Install-WindowsUpdate -NotCategory 'Microsoft SQL Server','Office Online Server' -AcceptAll -AutoReboot"

  $Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "$Argument"

  $Principal = New-ScheduledTaskPrincipal `
    -UserId 'domain\userid' `
    -RunLevel Highest `
    -LogonType S4U

  Register-ScheduledTask `
    -TaskPath '\SharePoint\' -TaskName 'PatchSharePoint' `
    -Trigger $Trigger `
    -Principal $Principal `
    -Action $Action `
    -Force | Out-Null

  Start-ScheduledTask -TaskPath '\SharePoint\' -TaskName 'PatchSharePoint'
}

需要交互式登录的修补程序仍未应用。但任务计划程序历史记录中的Action Completed状态。

Task Scheduler successfully completed task "\SharePoint\PatchSharePoint", instance "{...},  
action "PowerShell.exe" with return code 0.

编辑:修正了参数中的拼写错误。

35g0bw71

35g0bw711#

好的,使用计划任务S4U启动需要交互式会话的任务实际上没有问题。
这个例子很好用...

Invoke-Command -ComputerName RemoteSrv -ScriptBlock {

  $Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddYears(10)

  $Argument = "mmc.exe"

  $Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "$Argument"

  $Principal = New-ScheduledTaskPrincipal `
    -UserId 'domain\userid' `
    -RunLevel Highest `
    -LogonType S4U

  Register-ScheduledTask `
    -TaskPath '\PoC\' -TaskName 'StarMMC' `
    -Trigger $Trigger `
    -Principal $Principal `
    -Action $Action `
    -Force | Out-Null

  Start-ScheduledTask -TaskPath '\PoC\' -TaskName 'StartMMC'
}

当然,MMC不会与用户的桌面交互运行。这从来不是我们的意图。但它会启动。
我甚至不需要计划任务。这也将启动一个需要交互权限的进程。

Enter-PSSession RemoteSrv
[RemoteSrv] mmc.exe

或者我错过了什么?

bis0qfac

bis0qfac2#

我发现的远程修补SharePoint的大多数解决方案都是基于PSExec或CU的直接下载,而不是使用WUAU,如GitHub - SharePoint Patchify

相关问题