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

问题描述 投票:0回答:2

Thera 有很多关于使用 PowerShell 修补 Windows 的材料。还有一些关于远程修补的内容。
在为 SharePoint 优化/稳定补丁时,它们应该分批应用。

  1. 操作系统补丁
  2. SQL 补丁
  3. SharePoint 补丁

为了大大简化要应用的补丁的选择,我正在使用模块 PS Gallery - PSWindowsUpdate.

但是,SharePoint 的大部分补丁都必须以交互方式运行,这可以使用

Scheduled Tasks
。但这通常需要具有适当权限的用户已经在本地登录,这违背了远程脚本的目的:/

但我记得设置

S4U
,为用户服务,应该绕过该要求。但是,我似乎找不到要使用的正确参数。

我确实认为

S4U
被阻止访问网络(尽管其他来源另有说明),所以我试图确保事先下载补丁。通过使用内置的
WindowsUpdateProvider
PSWindowsUpdate
.

运行计划任务的账号当然也需要系统权限

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'
}

需要交互式登录的补丁仍然没有应用。但是 Task Scheduler 历史记录中的

Action Completed
状态。

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

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

powershell sharepoint scheduled-tasks powershell-remoting windows-update
2个回答
0
投票

好的,使用计划任务、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

或者我错过了什么?


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.