2015-08-25 3 views
6

В Windows Threshold бета, я могу запустить:

$env:username 

И увидеть имя пользователя. Я также могу запустить:

[environment]::username 

И посмотреть имя пользователя.

Однако в то время как я могу запустить

$env:computername 

Чтобы увидеть имя хоста, попытка запуска:

[environment]::computername 

не показывает никаких результатов.

enter image description here

Почему не [environment]::computername работа? В чем разница между $env и [средой]?

ответ

5

попробовать с помощью

[environment]::machinename 

$env непосредственно связан с Enviroment переменной

[environment] является .net class

+0

Так есть ли две среды? Традиционная среда оболочки с ее собственными ключами и значениями и отдельная среда .net? – mikemaccana

+1

@mikemaccana Класс .net также извлекает значение из переменной окружения, но как класс имеет методы и свойства. Пример: '[environment] :: GetEnvironmentVariable (« имя_компьютера »)' читает enialment variale, но '[environment] :: machinename' прямо читает имя netbios. –

+0

Спасибо @CB. Есть ли в общем случае одно хранилище данных или два? – mikemaccana

3

При использовании [environment]::computername вы на самом деле с помощью кода .NET в Powershell. Поэтому, прочитав документацию для Environment Class, вы увидите, что вместо этого вы должны использовать [environment]::machinename.

$env является ярлыком для окружающей среды PSDrive.

Я не знаю, почему Microsoft использует здесь два разных имени.

BTW: Есть намного больше способов получить имя компьютера, вы также можете, например. используйте wmi: Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name

+2

Другой способ - просто использовать 'hostname.exe';) –

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