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

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

新規登録して質問してみよう
ただいま回答率
86.12%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PowerShell

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

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

解決済

Javaによる「プライベートネットワーク」、「ゲストまたはパブリックネットワーク」の切り替え

teratail2020
teratail2020

総合スコア9

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PowerShell

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

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

1回答

0リアクション

0クリップ

1902閲覧

投稿2020/03/29 09:22

編集2020/03/29 09:24

前提・実現したいこと

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を実行可能としております。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2020/03/29 09:30

こちらの質問が他のユーザーから「過去の低評価」という指摘を受けました。

asahina1979

2020/03/29 09:42

> 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 Powershell (ICE) をつかえってこと
asahina1979

2020/03/29 09:48

そもそも、管理者実行をするなら 、そのアプリ自体, 管理者起動しないと管理者起動が失敗してるかとまた 管理者起動してないコマンドプロンプトで同じ手順をしてみてください。結果は同じくできないはずです
asahina1979

2020/03/29 09:48

また「Get-NetconnectionProfile」 は現在のネットワークprofileを取得してるのであって パブリックに切り替えるコマンドではありません。
teratail2020

2020/03/29 10:54

asahina1979 コメントありがとうございます。 ・管理者実行の有無にかかわらずpowershell Get-NetConnectionProfile ではCIM サーバーに接続できません。~のエラーがでます。一方、管理者権限無しではpowershell Set-ExecutionPolicy RemoteSignedコマンドにおいてSet-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHIN~へのアクセスが拒否されました。とエラーが出ますが、管理者で実行したときはエラーは出ませんでした。javaからbatファイルを実行する際にもエラーは出てなく、管理者としての実行を許可するか否かのダイアログが発生しているため管理者起動は" -verb runas"コマンドにより成功していると思います。 ・Get-NetconnectionProfileコマンドはネットワーク切り替えを行う前段階にNetworkCategory でパブリックかプライベートか確認したり、切り替えるべきInterfaceIndexを取得する目的で実施しています。ネットワーク切り替えはここの問題が片付いてから進む予定です

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PowerShell

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

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。