PowerShell에서 로컬 호스트 이름을 가져오려면 어떻게 해야 합니까?
PowerShell에서 로컬 호스트(시스템) 이름을 가져오려면 어떻게 해야 합니까?PowerShell 1.0을 사용하고 있습니다.
.NET Framework 방법을 사용하면 됩니다.
[System.Net.Dns]::GetHostName()
또한.
$env:COMPUTERNAME
이전 콘솔 유틸리티는 모두 PowerShell에서 올바르게 작동합니다.
PS> hostname
KEITH1
긴 형식:
get-content env:computername
간단한 형식:
gc env:computername
위의 질문은 모두 정답이지만 호스트 이름과 도메인 이름을 원하는 경우 다음을 시도하십시오.
[System.Net.DNS]::GetHostByName('').HostName
로컬 FQDN에 대한 @CPU-100의 응답을 약간 수정합니다.
[System.Net.DNS]::GetHostByName($Null).HostName
PowerShell Core v6(macOS, Linux 및 Windows에서 작동)의 경우:
[Environment]::MachineName
hostname
파워셸에서도 잘 작동합니다.
Powershell의 박쥐 파일 코드와 유사합니다.
cmd
wmic path Win32_ComputerSystem get Name
파워셸
Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name
그리고...
hostname.exe
Powershell 버전 1.0 및 기타 Powershell을 통해 정보를 얻을 수 있는 다양한 방법에 대한 개요는 특별히 없습니다.
- Native CmdLet(일반적으로 최고이지만 컴퓨터 이름을 얻는 데는 매우 느림):
(Get-ComputerInfo).CsDNSHostName
"도메인 이름 서버에 따른 로컬 컴퓨터 이름"을 반환합니다(Info about, Info about the return value). - 기존 명령줄 실행 파일:
hostname.exe
시스템의 전체 시스템 이름 중 호스트 이름 부분을 반환합니다(정보: - 환경 변수:
$env:COMPUTERNAME
- 레지스트리:
(Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName).ComputerName
- 정적.순 속성:
[Environment]::MachineName
"이 로컬 컴퓨터의 NetBIOS 이름"을 반환합니다. (클래스에 대한 정보) - 정적.순 방법:
[System.Net.Dns]::GetHostEntry("").HostName
시스템의 DNS 호스트 이름(fqdn)을 반환합니다(메소드에 대한 정보). - COM-Object 속성(사용되지 않는 Scripting-Api를 통한 컴퓨터 이름):
(New-Object -ComObject WScript.Network).ComputerName
"컴퓨터 시스템의 이름"을 반환합니다. (WshNetwork 개체에 대한 정보, 윈도우즈 스크립트 호스트 개체에 대한 정보) - WMI-Object 속성:
(Get-CimInstance -ClassName Win32_ComputerSystem).Name
(Win32_Computer System에 대한 정보) - 네이티브 API 함수를 호출합니다.
Add-Type -TypeDefinition @'
public enum COMPUTER_NAME_FORMAT{
ComputerNameNetBIOS,
ComputerNameDnsHostname,
ComputerNameDnsDomain,
ComputerNameDnsFullyQualified,
ComputerNamePhysicalNetBIOS,
ComputerNamePhysicalDnsHostname,
ComputerNamePhysicalDnsDomain,
ComputerNamePhysicalDnsFullyQualified,
ComputerNameMax,
}
public static class Kernel32{
[System.Runtime.InteropServices.DllImport("Kernel32.dll", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern bool GetComputerNameEx(COMPUTER_NAME_FORMAT NameType, System.Text.StringBuilder lpBuffer, ref uint lpnSize);
}
'@
$len = 0
[Kernel32]::GetComputerNameEx([COMPUTER_NAME_FORMAT]::ComputerNameDnsFullyQualified, $null, [ref]$len); #get required size
$sb = [System.Text.StringBuilder]::new([int]$len) #create StringBuilder with required capacity (ensure int constructor is used, otherwise powershell chooses string constructor for uint value...)
$len = $sb.Capacity #get actual capacity of StringBuilder (important, as maybe StringBuilder was constructed differently than expected)
[Kernel32]::GetComputerNameEx([COMPUTER_NAME_FORMAT]::ComputerNameDnsFullyQualified, $sb, [ref]$len);
$sb.ToString()
"로컬 시스템을 고유하게 식별하는 정규화된 DNS 이름을 반환합니다.이 이름은 DNS 호스트 이름과 DNS 도메인 이름의 조합으로, HostName 형식을 사용합니다.도메인 이름.로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer는 클러스터 가상 서버의 정규화된 DNS 이름을 수신합니다."
(API 함수에 대한 정보, 열거에 대한 정보, (비공식)의 c# 서명 사용, (비공식)의 c# 서명 사용, powershell의 P/Invoke에 대한 짧은 블로그 게시물)
참고: P/Invoke는 주의하여 사용하십시오.사용법이 잘못되면 실제로 파워셸이 손상될 수 있습니다. 그Add-Type
호출이 다소 느리지만 스크립트에서 한 번만 호출하면 됩니다.
제가 가장 설명할 수 있는 방법은 다음과 같습니다.
[System.Net.DNS]::GetHostByName($env:COMPUTERNAME).HostName
과 같이 할 수 .
$name = $(hostname)
나는 그것을 단순히 실행하는 것에 추가하고 싶습니다.$name = hostname
또한 PC의 로컬 호스트 이름을 변수에 저장합니다.
언급URL : https://stackoverflow.com/questions/1169891/how-do-i-get-the-localhost-name-in-powershell
'it-source' 카테고리의 다른 글
파일 경로에서 파일 이름을 신속하게 가져오는 방법 (0) | 2023.05.31 |
---|---|
Android 오류: *.apk를 장치에 설치하지 못했습니다 *: 시간 초과 (0) | 2023.05.31 |
Mongoose 문자열 키에 Json 개체 저장 (0) | 2023.05.31 |
페이지 gem을 설치할 수 없습니다. (0) | 2023.05.31 |
모바일 사파리에서 전화 번호 연결을 비활성화하는 방법은 무엇입니까? (0) | 2023.05.31 |