2015-08-27 6 views
1

Я пытаюсь выяснить, как определить, когда активная сеть является общедоступной. Есть ли способ вытащить это через WMIC или CMD, чтобы на самом деле отображать «Public» в качестве статуса? netstat, похоже, не дает мне того, что я хочу, IPconfig не показывает «public». Я попытался Get-NetConnectionProfile в Powershell, но не повезло :(CMD для определения «Общей сети» в активных сетях

Любые идеи?

+0

* Я попытался Get-NetConnectionProfile в Powershell, но не повезло: (* Что точная проблема, которую вы испытали – PetSerAl

+0

Get-NetConnectionProfile: Термин 'Get-NetConnectionProfile' не распознается как имя в командлет, функцию, файл сценария или исполняемую программу. Проверьте правильность написания имени или если включен путь , убедитесь, что путь верен и повторите попытку. В строке: 1 char: 1 + Get-NetConnectionProfile + ~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (Get-NetConnectionProfile: String) [], CommandNotF oundException + FullyQualifiedErrorId: CommandNotFoundException –

+0

OS? Версия PowerShell? – PetSerAl

ответ

0

Я нашел ответ для вас!

Это использует PowerShell и WMI, чтобы получить ответ на свой вопрос. Я проверил на машины с доменом и общественными настройками Интернетов (не имеют частную сети, извините)

 Get-WmiObject MSFT_NetConnectionProfile -Namespace root/StandardCimv2 | 
     select Name,@{n='ActiveNetworkProfile';e={ 
     switch ($_.NetworkCategory){ 
      0 {'Public'} 
      1 {'Private'} 
      2 {'Domain'} 
      Default {$_.NetworkCategory} 
      } 
      } 
     } 

Запуск этого дает следующий результат:

You can have multiple connections, but still only one firewall profile will be active.

Если вы хотите просто знать, что такое активный профиль, проведите вышеуказанное в Select -Unique ActiveNetworkProfile, который даст следующий результат.

enter image description here

+0

Если вам интересно, как я нашел ответ, я [использовал этот пост] (https://yoursandmyideas.wordpress.com/2014/12/30/decompiling-powershell-cmdlet -code /), чтобы выяснить, как декомпилировать командлет PowerShell. Затем я декомпилировал командлет Get-NetConnectionProfile, чтобы посмотреть классы WMI, которые он запрашивал. Весело! – FoxDeploy

+0

Спасибо, но я получаю Get-WmiObject: недопустимое пространство имен «root/StandardCimv2» В C: \ Temp \ powershell \ commoncommands.ps1: 700 char: 1 + Get-WmiObject MSFT_NetConnectionProfile -Namespace root/StandardCimv2 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument: (:) [Get-WmiObject], ManagementException + FullyQualifiedErrorId: GetWMIManagementException, Microsoft.PowerShell.Commands.GetWmiObj ectCommand –

+0

К сожалению, я просто заметил, что это пространство имен WMI существует только в Windows 8 и выше. Короткий ответ? То, что вы хотите, будет очень и очень сложно получить в Windows 7, если его вообще можно найти. – FoxDeploy

Смежные вопросы