네트워킹 작업 수행

이 샘플은 Windows 플랫폼에만 적용됩니다.

TCP/IP는 가장 일반적으로 사용되는 네트워크 프로토콜이므로 대부분의 하위 수준 네트워크 프로토콜 관리 작업에는 TCP/IP가 포함됩니다. 이 섹션에서는 PowerShell 및 WMI를 사용하여 이러한 작업을 수행합니다.

컴퓨터의 IP 주소 나열

로컬 컴퓨터에서 사용 중인 모든 IP 주소를 가져오려면 다음 명령을 사용합니다.

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExpandProperty IPAddress

Win32_NetworkAdapterConfiguration 개체의 IPAddress 속성은 배열이므로 전체 주소 목록을 보려면 Select-ObjectExpandProperty 매개 변수를 사용해야 합니다.

10.0.0.1
fe80::60ea:29a7:a233:7cb7
2601:600:a27f:a470:f532:6451:5630:ec8b
2601:600:a27f:a470:e167:477d:6c5c:342d
2601:600:a27f:a470:b021:7f0d:eab9:6299
2601:600:a27f:a470:a40e:ebce:1a8c:a2f3
2601:600:a27f:a470:613c:12a2:e0e0:bd89
2601:600:a27f:a470:444f:17ec:b463:7edd
2601:600:a27f:a470:10fd:7063:28e9:c9f3
2601:600:a27f:a470:60ea:29a7:a233:7cb7
2601:600:a27f:a470::2ec1

cmdlet을 Get-Member 사용하면 IPAddress 속성이 배열임을 확인할 수 있습니다.

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Get-Member -Name IPAddress
   TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_NetworkAdapterConfiguration

Name      MemberType Definition
----      ---------- ----------
IPAddress Property   string[] IPAddress {get;}

각 네트워크 어댑터의 IPAddress 속성은 실제로 배열입니다. 정의에 있는 중괄호는 IPAddressSystem.String 값이 아니라 System.String 값의 배열임을 나타냅니다.

IP 구성 데이터 나열

각 네트워크 어댑터에 대한 자세한 IP 구성 데이터를 표시하려면 다음 명령을 사용합니다.

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true

네트워크 어댑터 구성 개체의 기본 표시에는 매우 간단한 정보만 표시됩니다. 심층 검사 및 문제 해결의 경우 표시할 속성을 지정하기 위해 형식 지정 cmdlet(예: Format-List)을 사용합니다Select-Object.

최신 TCP/IP 네트워크에서는 IPX 또는 WINS 속성에 관심이 없을 수 있습니다. ExcludeProperty 매개 변수 Select-Object사용하여 "WINS" 또는 "IPX"로 시작하는 이름으로 속성을 숨길 수 있습니다.

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExcludeProperty IPX*,WINS*

이 명령은 DHCP, DNS, 라우팅 및 기타 사소한 IP 구성 속성에 대한 자세한 정보를 반환합니다.

컴퓨터에 대해 ping 수행

Win32_PingStatus를 사용하여 컴퓨터에 대해 간단한 ping을 수행할 수 있습니다. 다음 명령은 ping을 수행하지만 긴 출력을 반환합니다.

Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"

다음 명령에 의해 생성된 주소, ResponseTime 및 StatusCode 속성을 표시하는 요약 정보에 더 유용한 양식입니다. 자동 크기 조정 매개 변수 Format-TablePowerShell에 제대로 표시되도록 테이블 열의 크기를 조정합니다.

Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'" |
    Format-Table -Property Address,ResponseTime,StatusCode -Autosize
Address   ResponseTime StatusCode
-------   ------------ ----------
127.0.0.1            0          0

StatusCode가 0이면 ping에 성공했음을 나타냅니다.

배열을 사용하여 단일 명령으로 여러 컴퓨터를 ping할 수 있습니다. 주소가 두 개 이상 있으므로 각 주소를 개별적으로 ping하는 데 사용합니다 ForEach-Object .

'127.0.0.1','localhost','bing.com' |
  ForEach-Object -Process {
    Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
      Select-Object -Property Address,ResponseTime,StatusCode
  }

같은 명령 형식을 사용하여 네트워크 번호 192.168.1.0 및 표준 클래스 C 서브넷 마스크(255.255.255.0)를 사용하는 개인 네트워크와 같은 서브넷에 있는 모든 주소를 ping할 수 있습니다. 192.168.1.1에서 192.168.1.254 범위의 주소만 유효한 로컬 주소입니다. 0은 항상 네트워크 번호로 예약되어 있고 255는 서브넷 브로드캐스트 주소입니다.

PowerShell에서 1에서 254까지의 숫자 배열을 나타내려면 식을 1..254사용합니다. ping 문의 부분 주소에 범위의 각 값을 추가하여 전체 서브넷 ping을 수행할 수 있습니다.

1..254| ForEach-Object -Process {
  Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
    Select-Object -Property Address,ResponseTime,StatusCode

주소 범위를 생성하는 이 기술은 다른 곳에서도 사용할 수 있습니다. 다음과 같은 방법으로 전체 주소 집합을 생성할 수 있습니다.

$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}

네트워크 어댑터 속성 검색

이전에는 Win32_NetworkAdapterConfiguration 클래스를 사용하여 일반 구성 속성을 검색할 수 멘션. TCP/IP 정보에는 그대로 적용되지 않을 수 있지만 MAC 주소와 어댑터 유형 같은 네트워크 어댑터 정보는 컴퓨터의 상태를 파악하는 데 유용할 수 있습니다. 이 정보를 요약하려면 다음 명령을 사용합니다.

Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .

네트워크 어댑터의 DNS 도메인 할당

DNS do기본 자동 이름 확인을 할당하려면 Win32_NetworkAdapterConfiguration SetDNSDo기본 메서드를 사용합니다. 쿼리 매개 변수는 Invoke-CimMethodWQL 쿼리 문자열을 사용합니다. cmdlet은 쿼리에서 반환된 각 인스턴스에 지정된 메서드를 호출합니다.

$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql

TCP/IP만 사용하는 네트워크에서도 컴퓨터에 있는 여러 네트워크 어댑터 구성이 진정한 TCP/IP 어댑터가 아니기 때문에 IPEnabled=True에 대한 필터링이 필요합니다. 모든 어댑터에 대해 RAS, VPN, QoS 및 기타 서비스를 지원하는 일반 소프트웨어 요소이므로 자체 주소가 없습니다.

DHCP 구성 작업 수행

DHCP 세부 정보를 수정하려면 DNS 구성과 마찬가지로 네트워크 어댑터 집합을 사용하는 작업이 포함됩니다. WMI를 사용하여 수행할 수 있는 몇 가지 고유한 작업이 있습니다.

DHCP 사용 가능 어댑터 찾기

컴퓨터에서 DHCP 사용 어댑터를 찾으려면 다음 명령을 사용합니다.

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"

IP 구성에 문제가 있는 어댑터를 제외하려면 IP 사용 어댑터만 검색하면 됩니다.

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"

DHCP 속성 검색

어댑터에 대한 DHCP 관련 속성은 일반적으로 로 시작 DHCP하므로 속성 매개 변수 Format-Table 를 사용하여 해당 속성만 표시할 수 있습니다.

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter  "IPEnabled=$true and DHCPEnabled=$true" |
  Format-Table -Property DHCP*

각 어댑터에서 DHCP 사용

모든 어댑터에서 DHCP를 사용하도록 설정하려면 다음 명령을 사용합니다.

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

필터 문을 IPEnabled=True and DHCPEnabled=False 사용하면 이미 사용하도록 설정된 DHCP를 사용할 수 없습니다.

특정 어댑터에서 DHCP 임대 해제 및 갱신

Win32_NetworkAdapterConfiguration 클래스의 인스턴스에는 ReleaseDHCPLease 메서드가 있습니다RenewDHCPLease. 둘 다 동일한 방식으로 사용됩니다. 일반적으로 이러한 메서드는 특정 서브넷에 있는 어댑터 주소를 임대 해제 또는 갱신만 하면 되는 경우에 사용합니다. 서브넷에서 어댑터를 필터링하는 가장 쉬운 방법은 해당 서브넷에 게이트웨이를 사용하는 어댑터 구성만 선택하는 것입니다. 예를 들어 다음 명령은 192.168.1.254에서 DHCP를 임대하는 로컬 컴퓨터에 있는 어댑터의 모든 DHCP를 임대 해제합니다.

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

DHCP 임대를 갱신하기 위한 유일한 변경 내용은 메서드 대신 메서드를 RenewDHCPLeaseReleaseDHCPLease 사용하는 것입니다.

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql

참고 항목

원격 컴퓨터에서 이러한 메서드를 사용하는 경우 릴리스되거나 갱신된 임대를 사용하여 어댑터를 통해 원격 시스템에 연결된 경우 원격 시스템에 대한 액세스 권한을 잃을 수 있습니다.

모든 어댑터에서 DHCP 임대 해제 및 갱신

Win32_NetworkAdapterConfiguration 메서드를 사용하여 모든 어댑터에서 전역 DHCP 주소 릴리스 또는 갱신을 수행할 수 있습니다RenewDHCPLeaseAll. ReleaseDHCPLeaseAll 그러나 특정 어댑터 대신 WMI 클래스에서 한꺼번에 임대 해제하고 갱신하므로 이 명령을 특정 어댑터가 아니라 WMI 클래스에 적용해야 합니다. cmdlet은 Invoke-CimMethod 클래스의 메서드를 호출할 수 있습니다.

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

다음과 같이 동일한 명령 형식을 사용하여 RenewDHCPLeaseAll 메서드를 호출할 수 있습니다.

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

네트워크 공유 만들기

네트워크 공유를 만들려면 Win32_Share 방법을 사용합니다Create.

Invoke-CimMethod -ClassName Win32_Share -MethodName Create -Arguments @{
    Path = 'C:\temp'
    Name = 'TempShare'
    Type = [uint32]0 #Disk Drive
    MaximumAllowed = [uint32]25
    Description = 'test share of the temp folder'
}

이는 Windows의 다음 net share 명령과 동일합니다.

net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"

매개 변수를 사용하는 WMI 클래스의 메서드를 호출하려면 사용할 수 있는 매개 변수와 해당 매개 변수의 형식을 알고 있어야 합니다. 예를 들어 다음 명령을 사용하여 Win32_Class의 메서드를 나열할 수 있습니다.

(Get-CimClass -ClassName Win32_Share).CimClassMethods
Name          ReturnType Parameters                                   Qualifiers
----          ---------- ----------                                   ----------
Create            UInt32 {Access, Description, MaximumAllowed, Name…} {Constructor, Implemented, MappingStrings, Stati…
SetShareInfo      UInt32 {Access, Description, MaximumAllowed}        {Implemented, MappingStrings}
GetAccessMask     UInt32 {}                                           {Implemented, MappingStrings}
Delete            UInt32 {}                                           {Destructor, Implemented, MappingStrings}

다음 명령을 사용하여 Create 메서드의 매개 변수를 나열합니다.

(Get-CimClass -ClassName Win32_Share).CimClassMethods['Create'].Parameters
Name            CimType Qualifiers                                  ReferenceClassName
----            ------- ----------                                  ------------------
Access         Instance {EmbeddedInstance, ID, In, MappingStrings…}
Description      String {ID, In, MappingStrings, Optional}
MaximumAllowed   UInt32 {ID, In, MappingStrings, Optional}
Name             String {ID, In, MappingStrings}
Password         String {ID, In, MappingStrings, Optional}
Path             String {ID, In, MappingStrings}
Type             UInt32 {ID, In, MappingStrings}

Win32_Share 클래스의 Create 메서드에 대한 설명서를 읽을 수도 있습니다.

네트워크 공유 제거

Win32_Share 사용하여 네트워크 공유를 제거할 수 있지만 Win32_Share 클래스가 아닌 제거할 특정 인스턴스를 검색해야 하므로 프로세스는 공유를 만드는 것과 약간 다릅니다. 다음 예제에서는 TempShare 공유를 삭제합니다.

$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql

액세스 가능한 Windows 네트워크 드라이브 연결

New-PSDrive cmdlet은 네트워크 공유에 매핑된 PowerShell 드라이브를 만들 수 있습니다.

New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

그러나 이 방법으로 생성된 드라이브는 생성된 PowerShell 세션에서만 사용할 수 있습니다. PowerShell 외부(또는 다른 PowerShell 세션)에서 사용할 수 있는 드라이브를 매핑하려면 Persist 매개 변수를 사용해야 합니다.

New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

참고 항목

관리자 권한 컨텍스트에서 실행하는 경우 영구적으로 매핑된 드라이브를 사용할 수 없습니다. 이는 Windows UAC의 기본 동작입니다. 자세한 내용은