質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Windowsサービス

Windowsサービスは、Windows NTベースの管理システム上のService Control Managerによって走るバックグラウンドサービス処理で、daemonやUNIXサービスに類似しています。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

Q&A

1回答

2449閲覧

powershell windowsupdate HRESULTについて

nktdai

総合スコア7

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Windowsサービス

Windowsサービスは、Windows NTベースの管理システム上のService Control Managerによって走るバックグラウンドサービス処理で、daemonやUNIXサービスに類似しています。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

0グッド

0クリップ

投稿2021/07/28 15:52

編集2021/07/29 16:46

前提・実現したいこと

・powershellにてwindowsupdateを行いたいのですが、HRESULTの変数取得方法が分からなくwindowsupdateの終了方法がわかりません。

【参考文献】
https://qiita.com/asterisk9101/items/8a52562ade6d2a47a467
■■機能を実装中に以下のエラーメッセージが発生しました。
HRESULT からの例外:0x80240024

  • $downloader.Download()
  • + CategoryInfo : OperationStopped: (:) [], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

発生している問題・エラーメッセージ

・HRESULT の変数の取得方法がわからない
・windows updateを終了させたい

該当のソースコード

$searcher = $updateSession.CreateUpdateSearcher()
$searchResult = $searcher.search("IsInstalled=0 and Type='software'")
↑ここ(出力なし)ということは、アップデートなし。本当はsearchResult.ResultCode=2の為、
アップデートはあるっぽい。

$downloader = $updateSession.CreateUpdateDownloader()
$downloader.Updates = $updatesToDownload
$downloader.Download()←ここ(2回目以降、絶対にエラー:0x80240024。1回目は通る)

powershell(PSVersion :5.1.19041.1023)

試したこと

・ResultCode が2
PS C:\tmp> $searchResult
ResultCode RootCategories Updates Warnings


2 System.__ComObject System.__ComObject System.__ComObject

[正常系]
PS C:\tmp> $downloader.Download()
HResult ResultCode


0 2

補足情報(FW/ツールのバージョンなど)

PSVersion :5.1.19041.1023

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

HRESULTの変数 とは エラーの発生源の事を言っていますか?
もしそうなら$downloaderに入っているComオブジェクトなので
既に取得済みです。

$searcher = $updateSession.CreateUpdateSearcher()
が空なのに続きを実行した場合
$downloader.Updates = $updatesToDownloadでダウンロード項目を指定していますが
$updatesToDownload.Countが0になるはずです

$downloader.Download()はダウンロード対象がないのに実行された場合はエラーになります。

本当はsearchResult.ResultCode=2の為、 アップデートはあるっぽい。

とありますが
$downloader.Download()はアップデートそのものではなく必要なデータを
ダウンロードしているだけなので
searchResult.ResultCodeが0でなければ
ダウンロード自体はしているはずなので
これであっていると思います。

ちなみにResultCodeは下記の意味を持っているようです。
0:インストール処理未実行
1:インストール処理中
2:正常終了
3:処理は完了したが一部エラー
4:インストール処理エラー
5:インストール処理キャンセル

投稿2021/08/04 11:50

kamikazelight

総合スコア305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問