如何 运行 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/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
我的 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/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