###前提・実現したいこと
PowerShellウィンドウで実行した際は問題ないが
JP1経由からPowerShellを実行した際にエラーが発生するため質問いたします。
JP1からは「PCジョブ」を使って実行しています。
JP1PCジョブ → 対象サーバのPowerShellスクリプト実行
今回のケース以外では特に問題なくJP1→PowerShellが出来ています。
該当PowerShellはWindowsのIISの設定を行うスクリプトです。
###発生している問題・エラーメッセージ
・PowerShellウィンドウ(プロンプト)にて実行した場合 エラーも出ず想定通りの処理を行います。 ・JP1経由で実行した場合 下記エラーが標準出力されます。 CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} を含む コンポーネントの COM クラス ファクトリを取得中に、次の エラーが発生しました : 80040154 クラスが登録されていません (HRESULT からの例 外:0x80040154 (REGDB_E_CLASSNOTREG))。 イベントログ(アプリケーションとサービスログ\Microsoft\windows\PowerShell\operational)に出力された内容も記載しておきます。 -------------------------------------------- エラー メッセージ = CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80040154 クラスが登録されていません (HRESULT からの例外:0x80040154 (REGDB_E_CLASSNOTREG))。 完全修飾エラー ID = System.Runtime.InteropServices.COMException,Microsoft.IIs.PowerShell.Provider.GetConfigurationCommand コンテキスト: 重要度 = Warning ホスト名 = ConsoleHost ホストのバージョン = 4.0 ホスト ID = 1e327d4d-8013-4a09-ae3f-eb3d61ff6321 エンジンのバージョン = 4.0 実行空間 ID = 9a0b18e0-eea0-40da-a5e8-6607ede8eaa5 パイプライン ID = 1 コマンド名 = Get-WebConfiguration コマンドの種類 = Cmdlet スクリプト名 = 【※スクリプトのフルパス名が出ています】 コマンド パス = シーケンス番号 = 17 ユーザー = 【※サーバ名】\Administrator シェル ID = Microsoft.PowerShell ユーザー データ: --------------------------------------------
###該当のソースコード
Get- WebConfiguration /system.webServer/security/ipSecurity/* -location ”IIS:¥Sites” | Out-String -Stream この部分のコマンドでJP1経由だとエラーが発生します。
###試したこと
・コマンドのパス比較 Get-WebConfigurationコマンドまでのパスの見え方が違うのかと思って、gcmコマンドにてコマンドパスを確認しましたが、直接実行とJP1実行でパスの見え方は変わりませんでした。 --------------------------------------------- Name : Get-WebConfiguration CommandType : Cmdlet Definition : Get-WebConfiguration [-Filter] <string[]> [[-PSPath] <string[]>] [-Recurse] [-Metadata] [-Clr <strin g>] [-Location <string[]>] [<CommonParameters>] Path : AssemblyInfo : DLL : C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.IIS.PowerShell.Provider\v4.0_8.5.0.0__31bf3856a d364e35\Microsoft.IIS.PowerShell.Provider.dll HelpFile : Microsoft.IIS.PowerShell.Provider.dll-Help.xml ParameterSets : {[-Filter] <string[]> [[-PSPath] <string[]>] [-Recurse] [-Metadata] [-Clr <string>] [-Location <stri ng[]>] [<CommonParameters>]} ImplementingType : Microsoft.IIs.PowerShell.Provider.GetConfigurationCommand Verb : Get Noun : WebConfiguration ---------------------------------------------
・環境変数を設定してみました 実行時の環境変数が異なっていましたので、手動実行時に設定される環境変数を JP1から実行した際の環境変数にすべて設定をしてみましたが、結果は変わらずでした。 ※環境変数の設定はスクリプト内にべた書きで定義して確認
・Get-WebConfigurationをインポートする処理をスクリプトに入れてみました 単純に「Get-WebConfiguration」というコマンドの解釈が出来ない気がしたので以下のインポート文をスクリプトにいれてみましたがダメでした。 ipmo WebAdministration
手動実行の場合、「cd iis:\」ができるがJP1経由の場合、対象のディスクが無い旨のエラーメッセージが出力 IIS関連の情報が見えていないと思われます。
###補足情報(言語/FW/ツール等のバージョンなど)
JP1/Base ( 11-00-01 )
Windows Server 2012
PowerShell V4.0
PCジョブで実行とありますが、実行しているのはPowershellスクリプトですか
?それともPCジョブで直接コマンドを指定していますか?
Powershellスクリプトで実行している場合、タスクから実行すると違いはあるでしょうか?
おそらく、関連するDLLがJP1実行時において参照できていないのではと思っています。
over様
情報ありがとうございます。
>PCジョブで実行とありますが、実行しているのはPowershellスクリプトですか ?
PCジョブから対象サーバに配置されたPowershellスクリプトを実行しています。
>タスクから実行すると違いはあるでしょうか?
タスクから実行してみましたが「手動実行」と同じように問題が発生せず正常に動作します。
>おそらく、関連するDLLがJP1実行時において参照できていないのではと思っています。
当方も関連DLL等が参照できていないとみています。
JP1から実行時の環境変数は「手動実行」の時に設定されている環境変数と同じようにしてみましたが、変化無しでした。
JP1経由だとIISのディレクトリが見えていない(cd できなかった)事が分かりました。

回答1件
あなたの回答
tips
プレビュー