ローカルまたはリモートの Windows コンピューターの名前を PowerShell スクリプトで検索する必要がありますか。 もう悩むことはありません。 このチュートリアルでは、PowerShell を使用して、いくつかの異なる、時には予想外の方法でコンピューター名を取得する方法を学びます。
目次
前提条件
この記事は実践チュートリアルとします。 このチュートリアルで学んだ概念を適用したい場合は、PowerShell があることを確認してください。 これだけです!
Hostname コマンドの使用
PowerShell の時代以前には、Windows コマンド インタープリターといえば、古き良き cmd .exe だけでした。 当時は、コンピューター名を取得するのに PowerShell は必要なく、hostname
コマンドがありました!
hostname
コマンドは、これ以上ないほどシンプルでした。 Open up a PowerShell (or even cmd .exe prompt) and type hostname
. Done. This command returns a single string (the computer name of the local computer).
Using the System.Net.DNS .NET Class
If you’d like to go the more PowerShell-centric approach, you can also reference a static method called GetHostByName()
located in the System.Net.DNS
.NET class or perhaps the GetHostName()
method.
The GetHostName() Method
Using the GetHostName()
method is probably the easiest way to use PowerShell to get a computer name. Simply call this static method with no arguments as shown below. This command will return a single string just like the hostname
command does.
::GetHostName()
The GetHostByName() Method
An alternative but similar System.Net.DNS
class method you can use to get a computer name is called GetHostByName()
. This method is actually a DNS resolver and can be used to look up other host names as well.
If, for example, you’d like to find the host name of the local computer, run ::GetHostByName($null)
or ::GetHostByName('')
.
::GetHostByName('')::GetHostByName($Null)
You’ll see that this method isn’t strictly meant for finding computer names; you can also lookup IP addresses as well via the AddressList
property as shown below.
If, however, you want to only find the local computer name; を参照し、PowerShell はホスト名のみを返します。
::GetHostByName('').HostName::GetHostByName($Null).HostName
環境変数の使用
環境変数は常に Windows コンピューターに関する情報を見つけるための素晴らしい場所です。 他のすべての環境変数と同様に、$env
PowerShell 構造体を介してユーザー環境変数にアクセスできます。
環境変数 COMPUTERNAME
を参照するには、PowerShell を開いて環境変数名の前に $env:
を付けてください。
$env:COMPUTERNAME
MachineName
また、何らかの理由でユーザー ベース COMPUTERNAME
環境変数が使用できない場合、.NET の一部の MachineName
プロパティを使用して、その環境に合った方法で使用することもできます。
Environment
MachineName
プロパティを参照する Environment
.
::MachineName
WMI の使用
最後に、WMI または CIM に入るという選択肢も常にあります。 わずかではありますが、最もオーバーヘッドを必要とするので、おそらくこれを最後の手段とすべきです。
ローカル コンピューター名を照会するために WMI を使用したい場合、Get-CimInstance
を使用して、次のように Win32_ComputerSystem クラスを照会してください。 Get-CimInstance
はコンピューター名ではなく、CIM インスタンスを表すオブジェクトを返すので、コンピューター名のみを返すように Name
プロパティを参照します。
Get-CimInstance -ClassName Win32_ComputerSystem(Get-CimInstance -ClassName Win32_ComputerSystem).Name