none
GPOで実行したPowerShellがうまく動作しない RRS feed

  • 質問

  • ローカル上で下記のPowerShellスクリプトを管理者権限で実行することで、Javaを削除することが出来ました。

    ==============Script==============

    $comName = $Env:COMPUTERNAME
    $logPath = "\\install_path\" + $comName + ".log"

    Start-Transcript -Path $logPath
    $Java = gwmi win32_product -filter "name like 'Java%'"

    If ($Java -ne $null) {
            $Java.Uninstall()
    }

    Stop-Transcript

    ==============Script==============

    これを自動化したいと考え、GPOのスタートアップスクリプトに設定したところ、下記エラーにてJavaを削除することが出来ませんでした。

    GPOでの実行が正常に行われないのはどこに問題があるのでしょうか。

    ====================エラーログ====================

    [System.Object[]] に 'Uninstall' という名前のメソッドが含まれないため、メソッドの呼び出しに失敗しました。
    発生場所 \\Domain名\Policies\{GPOアドレス}\Machine\Scripts\Shutdown\JavaUninstall.ps1:8 文字:24
    +         $Java.Uninstall <<<< ()
        + CategoryInfo          : InvalidOperation: (Uninstall:String) []、RuntimeException
        + FullyQualifiedErrorId : MethodNotFound**********************

    ====================エラーログ====================

    2014年4月17日 9:23

回答

  • $Java = gwmi win32_product -filter "name like 'Java%'"

    の行で、"Java"から始まるプログラム名が複数あるため、$Java変数に配列が格納されている可能性があると思います。

    [System.Object[]] というのは配列のことです

    Javaで始まる名前のプログラムを一括削除して問題ないのならば、foreachでループを回し、その中で各要素にUnInstall()メソッドを実行すれば良いかと思います。

    ただいずれにせよ、プログラム名指定がちょっと乱暴すぎるように思いますので、アンインストールすべきプログラム名をリスト化し、それに合致した場合に削除する等の処理を検討してみてはいかがでしょうか。

    • 回答としてマーク UltraKatan 2014年4月18日 8:08
    2014年4月17日 10:34
    モデレータ

すべての返信

  • $Java = gwmi win32_product -filter "name like 'Java%'"

    の行で、"Java"から始まるプログラム名が複数あるため、$Java変数に配列が格納されている可能性があると思います。

    [System.Object[]] というのは配列のことです

    Javaで始まる名前のプログラムを一括削除して問題ないのならば、foreachでループを回し、その中で各要素にUnInstall()メソッドを実行すれば良いかと思います。

    ただいずれにせよ、プログラム名指定がちょっと乱暴すぎるように思いますので、アンインストールすべきプログラム名をリスト化し、それに合致した場合に削除する等の処理を検討してみてはいかがでしょうか。

    • 回答としてマーク UltraKatan 2014年4月18日 8:08
    2014年4月17日 10:34
    モデレータ
  • 牟田口さま

    いつも的確な回答ありがとうございます。

    foreachで回すことですべてのアプリを削除することが出来ました。

    PCによってインストールされているバージョン異なるため、どのバージョンでも削除出来るように設定しておりましたが、

    確かにアバウトすぎる部分があるので、もう少し絞った形で抽出を行うことと致します。

    2014年4月18日 8:10