Managing updates in Nano Server
[URL] https://technet.microsoft.com/en-us/library/mt651736.aspx
やってみました。フル インストール向けと同じ累積的な更新 KB3157663 が出てました。
利用可能な更新がないと、次のようなエラーが表示されるけどびっくりしないで。
Invoke-CimMethod : A general error occurred that is not covered by a more specific error code.
At C:\nanoupdate.ps1:2 char:16
+ ... anResults = Invoke-CimMethod -InputObject $sess -MethodName ScanForUp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MSFT_WUOperatio...-7284976777f5"):CimInstance) [Invoke-CimMethod], CimExc
eption
+ FullyQualifiedErrorId : MI RESULT 1,Microsoft.Management.Infrastructure.CimCmdlets.InvokeCimMethodCommand
コマンドラインを打つのが面倒なので、スクリプトにしてみました。
(注: 動作保障なし)
nanoupdate.ps1
(5/5 修正: $erroractionpreference = SilentlyContinueを追加して、利用可能な更新が無いときのエラーを抑制。参考 → https://technet.microsoft.com/ja-jp/library/ee176921.aspx)
--------------------------------------------------------------------------------
$erroractionpreference = "SilentlyContinue"
$sess = New-CimInstance -Namespace root/Microsoft/Windows/WindowsUpdate -ClassName MSFT_WUOperationsSession
$scanResults = Invoke-CimMethod -InputObject $sess -MethodName ScanForUpdates -Arguments @{SearchCriteria="IsInstalled=0";OnlineScan=$true}
if($scanResults)
{
if ($scanResults.Updates)
{
Write-Output "Available updates:"
$scanResults.Upates
Write-Host "Would you like to install these update now ? (Y/N)" -NoNewline
$input = Read-Host
if($input -eq 'Y') {
Write-Output "Install all available updates..."
$scanResults = Invoke-CimMethod -InputObject $sess -MethodName ApplyApplicableUpdates
Write-Host "Would you like to restart computer now ? (Y/N)" -NoNewline
$input = Read-Host
if($input -eq 'Y') {
Write-Output "Restart computer..."
Restart-Computer
}
else
{
Write-Output "Make sure restart computer as soon as possible."
}
}
else
{
Write-Output "No updates were installed."
}
}
else
{
Write-Output "No updates were found."
}
}
else
{
Write-Output "No updates were found."
}
--------------------------------------------------------------------------------
Nano Server で実行するとこんな感じ。
こちらはインストールの履歴。
nanoupdatehistory.ps1
--------------------------------------------------------------------------------
$sess = New-CimInstance -Namespace root/Microsoft/Windows/WindowsUpdate -ClassName MSFT_WUOperationsSession
$scanResults = Invoke-CimMethod -InputObject $sess -MethodName ScanForUpdates -Arguments @{SearchCriteria="IsInstalled=1";OnlineScan=$true}
if ($scanResults.Updates)
{
Write-Output "Installed updates:"
$scanResults.Updates
}
else
{
Write-Output "No updates were installed."
}
--------------------------------------------------------------------------------
Nano Server で実行するとこんな感じ。
で、スクリプト作ったはいいけど、どうやって Nano Server にもってくのって話ですが、
Nano Server で Hyper-V 仮想マシンで動いている場合は、仮想マシンのプロパティで「ゲスト サービス」を有効化して...
PS C:\> Copy-VMFile -Name <仮想マシン名> -SourcePath:C:\work\nanoupdate.ps1 -DestinationPath:C:\ -FileSource Host
Hyper-V 仮想マシンで無い場合は、Nano Server 側でファイルとプリンターの共有のファイアウォールを許可して、\\<コンピューター名>\C$ にでもぶっこんでください。
[NANOSERVER] : PS C:\> netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
共有フォルダーに配置して、Nano Server 側からコピーするでもよし。Web サーバーにおいて、wget するもよし。
参考:
Nano Server 用 wget スクリプト (2015/12/11)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。