다음을 통해 공유


네트워킹 작업 수행

이 샘플은 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-Object 매개 변수를 사용해야 합니다.

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

Get-Member cmdlet을 사용하면 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

네트워크 어댑터 구성 개체의 기본 표시는 사용 가능한 정보의 매우 축소된 집합입니다. 심층적인 검사 및 문제 해결을 위해 Select-Object 또는 Format-List같은 서식 cmdlet을 사용하여 표시할 속성을 지정합니다.

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

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

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

컴퓨터에 핑을 보내기

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

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

Win32_PingStatus 응답에는 29개의 속성이 포함됩니다. Format-Table 사용하여 가장 흥미로운 속성을 선택할 수 있습니다. AutoSize 매개 변수는 Format-Table PowerShell에 제대로 표시되도록 테이블 열의 크기를 조정합니다.

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할 수 있습니다. 주소가 두 개 이상 있으므로 ForEach-Object 사용하여 각 주소를 개별적으로 ping합니다.

'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 도메인을 할당하려면 Win32_NetworkAdapterConfigurationSetDNSDomain 메서드를 사용합니다. Invoke-CimMethod 매개 변수는 WQL 쿼리 문자열을 사용합니다. 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 클래스의 인스턴스에는 ReleaseDHCPLeaseRenewDHCPLease 메서드가 있습니다. 둘 다 동일한 방식으로 사용됩니다. 일반적으로 특정 서브넷의 어댑터에 대한 주소만 해제하거나 갱신해야 하는 경우 이러한 메서드를 사용합니다. 서브넷에서 어댑터를 필터링하는 가장 쉬운 방법은 해당 서브넷에 게이트웨이를 사용하는 어댑터 구성만 선택하는 것입니다. 예를 들어 다음 명령은 192.168.1.254에서 DHCP 임대를 가져오는 로컬 컴퓨터의 어댑터에서 모든 DHCP 임대를 해제합니다.

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

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

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

메모

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

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

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

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

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

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

네트워크 공유 만들기

네트워크 공유를 만들려면 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의 기본 동작입니다. 자세한 내용은 다음 문서를 참조하세요.