如何 运行 AdamJ 在 Server 2016 Core 上的 WSUS 自动维护脚本

How to run AdamJ's WSUS Automated Maintenance script on Server 2016 Core

我的 WSUS 服务器 运行s Server 2016 核心版没有 GUI,因此所有内容都必须通过 powershell 安装。当我 运行 Adamj_Clean-WSUS.ps1 -FirstRun 时,错误是:

The term 'sqlcmd' is not recognized...

Executing ComputerObjectCleanup
Executing WSUSDBMaintenance
11     Job11           BackgroundJob   Failed        False           localhost            sqlcmd -S np:\.\pipe\...
The term 'sqlcmd' is not recognized as the name of a cmdlet...

You cannot call a method on a null-valued expression.
At C:\Users\user\Documents\Adamj_Clean-WSUS.ps1:2480 char:9
...
You cannot call a method on a null-valued expression.
At C:\Users\user\Documents\Adamj_Clean-WSUS.ps1:2482 char:9
+         $Script:AdamjWSUSDBMaintenanceOutputHTML += $AdamjWSUSDBMaint ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Executing WSUSServerCleanupWizard
_

必须杀死 window 才能在 运行 几个小时后停止它。

下载 ODBC 驱动程序和 SQL 命令行实用程序

https://docs.microsoft.com/en-us/sql/connect/odbc/windows/system-requirements-installation-and-driver-files#installing-microsoft-odbc-driver-for-sql-server

https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility

复制文件到核心服务器

一种方法是将它们放入另一台服务器上的共享中,然后挂载该共享:

New-PSDrive -Name T -PSProvider FileSystem -Root \<server_IP>\<share_name> -Credential <domain>\<user>
cp T:\<folder>\msodbcsql.msi.msi .
cp T:\<folder>\MsSqlCmdLnUtils.msi .
cp T:\<folder>\Clean-WSUS.ps1 .

如何安装 msi 文件

如果您习惯于按 tab 键来完成文件名并认为自动添加到文件名前的“.\”是无辜的,请注意它不是:https://superuser.com/a/1310787/891171

安装 odbc 驱动程序

msiexec /i msodbcsql.msi /qn IACCEPTMSODBCSQLLICENSETERMS=YES /L*V msodbcsql.log

验证日志:

Get-Content -path .\msodbcsql.log

安装sqlcmd

msiexec /i MsSqlCmdLnUtils.msi /Passive /NoRestart IACCEPTMSSQLCMDLNUTILSLICENSETERMS=YES /L*V MsSqlCmdLnUtils.log

验证日志:

Get-Content -path .\MsSqlCmdLnUtils.log

设置路径

这是我的 SQLCMD.EXE 安装的地方。 YMMV:

$env:Path += ";C:\Program Files\Microsoft SQL Server\Client SDK\ODBC0\Tools\Binn\"

执行脚本

如脚本中所述(您已经阅读了评论并设置了变量,对吗?),运行 首先:

PowerShell.exe -ExecutionPolicy Bypass

然后:

Clean-WSUS.ps1 -FirstRun