前提・実現したいこと
Javaからpowershellを起動させて「プライベートネットワーク」、「ゲストまたはパブリックネットワーク」を切り替えを行おうとしております。切り替えを行う前段階としてGet-NetconnectionProfileコマンドを実行したところ、以下のエラーが発生します。
発生している問題・エラーメッセージ
Get-NetconnectionProfile : CIM サーバーに接続できません。指定されたサービスはインストールされたサービスとして存在しませ ん。 発生場所 行:1 文字:1 + Get-NetconnectionProfile + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (MSFT_NetConnectionProfile:String) [Get-NetConnectionProfile], CimJ obException + FullyQualifiedErrorId : CimJob_BrokenCimSession,Get-NetConnectionProfile
該当のソースコード
・Javaソースコード String tempdirect; //コマンドファイルの保管場所 tempdirect = "powershell start-process " + new File("").getAbsoluteFile() + "\Command\PublicChange.bat" + " -verb runas"; ProcessBuilder netSetBat = new ProcessBuilder("cmd.exe", "/c",tempdirect); //batファイルを実行 try { netSetBat.start(); } catch (IOException e) { // TODO 自動生成された catch ブロック System.out.println("Fail to change public network"); } ・PublicChange.batファイルソースコード @echo on powershell Set-ExecutionPolicy RemoteSigned powershell Start-process powershell %~dp0\PublicChange.ps1 powershell Set-ExecutionPolicy Restricted Pause ・PublicChange.ps1ファイルソースコード Get-NetConnectionProfile Pause
試したこと
・コマンドプロンプトを立ち上げ powershell Get-NetConnectionProfileを実行:CIM サーバーに接続できません~のエラーが出力されます。
・コマンドプロンプトを立ち上げ、powershellコマンドでpowershellを起動後、Get-NetConnectionProfileコマンドを実行:正常作動(下記表示が出ます)
C:\Users\ユーザー名>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
PS C:\Users\ユーザー名>Get-NetConnectionProfile
Name : aterm-
InterfaceAlias : Wi-Fi 2
InterfaceIndex : 5
NetworkCategory : Public
IPv4Connectivity : Internet
IPv6Connectivity : NoTraffic
・PublicChange.batファイルソースコードを以下のようにして実行したところ
@echo on
powershell Set-ExecutionPolicy RemoteSigned
start powershell
powershell Set-ExecutionPolicy Restricted
Pause
以下の画面が出力されました。
PS C:\Windows\system32> Get-NetconnectionProfile
Get-NetconnectionProfile : CIM サーバーに接続できません。 ※以下同じ
一方、powershellを直接起動した後に、Get-NetconnectionProfileを実行すると以下の表示となりました。
新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
PS C:\Windows\system32> Get-NetconnectionProfile
Name : aterm-
InterfaceAlias : Wi-Fi 2
InterfaceIndex : 5
NetworkCategory : Public
IPv4Connectivity : Internet
IPv6Connectivity : NoTraffic
PS C:\Windows\system32> までは同一なのに表示結果が異なる理由がわかりません。
ご存じの方がおられましたら教えていただけないでしょうか。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
batファイルをpowershellで実行しているのは、管理者として実行を行わせるためです。
これにより、powershell Set-ExecutionPolicy RemoteSignedを実行可能としております。
回答1件
あなたの回答
tips
プレビュー