네트워킹 작업 수행
이 샘플은 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
의 ExpandProperty 매개 변수를 사용해야 합니다.
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 속성은 실제로 배열입니다. 정의에 있는 중괄호는 IPAddress가 System.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-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할 수 있습니다. 주소가 두 개 이상 있으므로 각 주소를 개별적으로 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-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 클래스의 인스턴스에는 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 임대를 갱신하기 위한 유일한 변경 내용은 메서드 대신 메서드를 RenewDHCPLease
ReleaseDHCPLease
사용하는 것입니다.
$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의 기본 동작입니다. 자세한 내용은
PowerShell