2015-08-25 12 views
6

Unter Windows Threshold Beta, kann ich laufen:

$env:username 

Und den Benutzernamen sehen. Ich kann auch laufen:

[environment]::username 

Und siehe den Benutzernamen.

Doch während ich

$env:computername 

führen Sie den Host-Namen zu sehen, zu laufen versuchen:

[environment]::computername 

keine Ergebnisse nicht zeigen.

enter image description here

Warum funktioniert [environment]::computername Arbeit? Was ist der Unterschied zwischen $env und [Umgebung]?

Antwort

5

try

[environment]::machinename 

$env mit direkt

[environment] an Umgebungsvariable gebunden ist .net class

+0

Also gibt es zwei Umgebungen? Eine traditionelle Shell-Umgebung mit eigenen Schlüsseln und Werten und einer separaten .net-Umgebung? – mikemaccana

+1

@mikemaccana Die .net-Klasse ruft auch den Wert von environmet-Variablen ab, hat aber als Klasse Methoden und Eigenschaften. Beispiel: '[environment] :: GetEnvironmentVariable (" Computername ")' liest die Umgebungsvariable, aber '[environment] :: machinename' liest den NetBIOS-Namen direkt. –

+0

Danke @ CB. Gibt es letztendlich einen oder zwei Datenspeicher? – mikemaccana

3

Wenn Sie [environment]::computername Sie sind in der Tat mit .NET-Code in Powershell verwenden. Wenn Sie also die Dokumentation für die Environment Class lesen, sollten Sie stattdessen [environment]::machinename verwenden.

$env ist eine Abkürzung für die Umgebung PSDrive.

Ich weiß nicht, warum Microsoft hier zwei verschiedene Namen verwendet.

BTW: Es gibt viele Möglichkeiten, den Computernamen zu bekommen, Sie könnten auch z. Verwenden Sie wmi: Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name

+2

ein anderer Weg ist nur mit 'hostname.exe';) –

Verwandte Themen