Включение DHCP
param($computer="localhost",$action,$help) function funHelp() { $helpText=@" DESCRIPTION: NAME: WorkWithDHCP.ps1 Works with DHCP settings on a local or remote machine. PARAMETERS: -computerName Specifies the name of the computer upon which to run the script -action <q(uery) e(nable) r(elease) rr(release/renew) action to perform -help prints help file SYNTAX: WorkWithDHCP.ps1 -q "yes" -computer MunichServer Queries DHCP settings on a computer named MunichServer WorkWithDHCP.ps1 -action e enables DHCP on local computer WorkWithDHCP.ps1 -action r Releases the DHCP address on the local machine WorkWithDHCP.ps1 -action rr Releases and then renews the DHCP address on the local machine WorkWithDHCP.ps1 -help ? Displays the help topic for the script "@ $helpText exit } function FunEvalRTN($rtn) { Switch ($rtn.returnvalue) { 0 { Write-Host -foregroundcolor green "No errors for $strCall" } 82 { Write-Host -foregroundcolor red "$strCall reports" ` " Unable to renew DHCP lease" } 83 { Write-Host -ForegroundColor red "$strCall reports" ` " Unable to release DHCP lease" } 91 { Write-Host -ForegroundColor red "$strCall reports" ` " access denied"} DEFAULT { Write-Host -ForegroundColor red "$strCall service reports" ` " ERROR $($rtn.returnValue)" } } $rtn=$strCall=$null } if($help) { funhelp } $global:RTN = $null if(!$action) { $action="q" } $objWMI = Get-WmiObject -Class win32_networkadapterconfiguration ` -computer $computer -filter "ipenabled = 'true'" Switch($action) { "e" { $rtn = $objWMI.EnableDHCP() ; $strCall = "Enable DHCP" ; FunEvalRTN($rtn) } "r" { $rtn = $objWMI.ReleaseDHCPLease() ; $strCall = "Release DHCP address" ; FunEvalRTN($rtn) } "rr" { $rtn = $objWMI.RenewDHCPLease() ; $strCall = "Release and Renew DHCP address" ; FunEvalRTN($rtn) } "q" { "DHCP Server: $($objWMI.dhcpserver)" "Lease obtained: " + [Management.ManagementDatetimeConverter]::` todatetime($objWMI.DHCPleaseObtained) "Lease expires: " + [Management.ManagementDatetimeConverter]::` todatetime($objWMI.DHCPleaseExpires) } }
Вывод информации о конфигурации адаптеров (локальных и на удаленных хостах)
param($computer="localhost",$query,$help) function funHelp() { $helpText=@" DESCRIPTION: NAME: GetNetAdapterConfig.ps1 Produces a listing of network adapter configuration information on a local or remote machine. PARAMETERS: -computer Specifies the name of the computer to run the script -help prints help file -query the type of query < ip, dns, dhcp, all > SYNTAX: GetNetAdapterConfig.ps1 -computerName MunichServer Lists default network adapter configuration on a computer named MunichServer GetNetAdapterConfig.ps1 -computerName MunichServer -query IP Lists IPaddress, IPsubnet, DefaultIPgateway, MACAddress on a computer named MunichServer GetNetAdapterConfig.ps1 -computerName MunichServer -query DNS Lists DNSDomain, DNSDomainSuffixSearchOrder, DNSServerSearchOrder, DomainDNSRegistrationEnabled on a computer named MunichServer GetNetAdapterConfig.ps1 -computerName MunichServer -query DHCP Lists Index,DHCPEnabled, DHCPLeaseExpires, DHCPLeaseObtained, DHCPServer on a computer named MunichServer GetNetAdapterConfig.ps1 -computerName MunichServer -query ALL Lists all network adapter configuration information on a computer named MunichServer GetNetAdapterConfig.ps1 -help ? Prints the help topic for the script "@ $helpText exit } if($help) { "Printing help now..." ; funHelp } $class="win32_networkadapterconfiguration" $IPproperty="IPaddress, IPsubnet, DefaultIPgateway, MACAddress" $dnsProperty="DNSDomain, DNSDomainSuffixSearchOrder, ` DNSServerSearchOrder, DomainDNSRegistrationEnabled" $dhcpProperty="Index,DHCPEnabled, DHCPLeaseExpires, ` DHCPLeaseObtained, DHCPServer" if($query) { switch($query) { "ip" { $query="Select $IPproperty from $class" } "dns" { $query="Select $dnsProperty from $class" } "dhcp" { $query="Select $dhcpProperty from $class" } "all" { $query = "Select * from $class" ; ` Get-WmiObject -Query $query | format-list * ; exit } DEFAULT { $query = "Select * from $class" ; ` Get-WmiObject -Query $query ; exit } } } ELSE { $query = "Select * from $class" ; ` Get-WmiObject -Query $query ; exit } Get-WmiObject -query $query | format-table [a-z]* -AutoSize
Вывод информации о настройках брандмауэра
$fwCfg = netsh firewall show config $enable=$disable=$null switch -regex ($fwCfg) { "enable" { $enable+=$switch.current+"`n" } "disable" { $disable+=$switch.current+"`n" } } Write-Host -ForegroundColor cyan ` "Firewall configuration on $env:computername" Write-Host -ForegroundColor green ` "The following are enabled`n" $enable Write-Host -ForegroundColor red ` "The following are disabled`n" $disable
Задание статического IP
param($computer="localhost",$q,$ip,$sm,$dg,$dns,$help) function funHelp() { $helpText=@" DESCRIPTION: NAME: SetStaticIP.ps1 Sets a static IP address on a local or remote machine. PARAMETERS: -computerName Specifies the name of the computer upon which to run the script -q Queries all IP bound network adapters -ip IP address to use -sm Subnet mask to use -dg Default gateway to use -dns Dns server to use -help prints help file SYNTAX: SetStaticIP.ps1 -q "yes" -computer MunichServer Lists all the network adapters bound to IP on a computer named MunichServer SetStaticIP.ps1 Lists all the network adapters bound to IP on local computer SetStaticIP.ps1 -ip "10.0.0.1" -sm "255.0.0.0" -dg "10.0.0.5" -dns "10.0.0.2" Sets the Ip address to 10.0.0.1 and the subnet mask to 255.0.0.0 and the default Gateway to 10.0.0.5 with a dns server of 10.0.0.2 on the local machine SetStaticIP.ps1 -help ? Displays the help topic for the script "@ $helpText exit } function FunEvalRTN($rtn) { Switch ($rtn.returnvalue) { 0 { Write-Host -foregroundcolor green "No errors for $strCall" } 66 { Write-Host -foregroundcolor red "$strCall reports" ` " invalid subnetMask" } 70 { Write-Host -ForegroundColor red "$strCall reports" ` " invalid IP" } 71 { Write-Host -ForegroundColor red "$strCall reports" ` " invalid gateway" } 91 { Write-Host -ForegroundColor red "$strCall reports" ` " access denied"} 96 { Write-Host -ForegroundColor red "$strCall reports" ` " unable to contact dns server"} DEFAULT { Write-Host -ForegroundColor red "$strCall service reports" ` " ERROR $($rtn.returnValue)" } } $rtn=$strCall=$null } if($help) { funhelp } if($q) { Get-WmiObject -Class win32_networkadapterconfiguration ` -computer $computer -filter "ipenabled = 'true'" exit } if(!$ip) { funhelp } if(!$sm) { funhelp } if(!$dg) { funhelp } if(!$dns) { funhelp } $global:RTN = $null $metric = [int32[]]1 $objWMI = Get-WmiObject -Class win32_networkadapterconfiguration ` -computer $computer -filter "ipenabled = 'true'" $RTN=$objwmi.EnableStatic($ip, $sm) $strCall="enable static IP and subnet mask" FunEvalRTN($rtn) $RTN=$objwmi.SetGateways($dg, $metric) $strCall="enable set default gateway and metric" FunEvalRTN($rtn) $RTN=$objwmi.SetDNSServerSearchOrder($dns) $strCall="Set the dns server search order" FunEvalRTN($rtn)
Идентификация подсоединенных сетевых адаптеров
$computer="localhost" $connected=2 Get-WmiObject -Class win32_networkadapter -computername $computer ` -filter "netconnectionstatus = $connected" | foreach-object ` { Get-WmiObject -Class win32_networkadapterconfiguration ` -computername $computer -filter "Index = $($_.deviceID)" }
Обнаружение нескольких сетевых адаптеров
Get-WmiObject -Class win32_networkadapter | format-table -Property name, interfaceIndex, ` adapterType, macAddress -autosize
Отчет о состоянии сетевых адаптеров
param($computer="localhost",$help) function funStatus($status) { switch($status) { 0 { " Disconnected" } 1 { " Connecting" } 2 { " Connected" } 3 { " Disconnecting" } 4 { " Hardware not present" } 5 { " Hardware disabled" } 6 { " Hardware malfunction" } 7 { " Media disconnected" } 8 { " Authenticating" } 9 { " Authentication succeeded" } 10 { " Authentication failed" } } } function funHelp() { $helpText=@" DESCRIPTION: NAME: GetNetAdapterStatus.ps1 Produces a listing of network adapters and status on a local or remote machine. PARAMETERS: -computerName Specifies the name of the computer upon which to run the script -help prints help file SYNTAX: GetNetAdapterStatus.ps1 -computer MunichServer Lists all the network adapters and status on a computer named MunichServer GetNetAdapterStatus.ps1 Lists all the network adapters and status on local computer GetNetAdapterStatus.ps1 -help ? Displays the help topic for the script "@ $helpText exit } function funline ($strIN) { $num = $strIN.length for($i=1 ; $i -le $num ; $i++) { $funline = $funline + "=" } Write-Host -ForegroundColor yellow $strIN Write-Host -ForegroundColor darkYellow $funline } if($help) { "Printing help now..." ; funHelp } $objWMI=Get-WmiObject -Class win32_networkadapter -computer $computer funline("Network adapters and status on $computer") foreach($net in $objWMI) { Write-Host "$($net.name)" funstatus($net.netconnectionstatus) }
Примеры задания настроек брандмауэра
Включение удаленного администрирования
$errRTN=netsh firewall set service remoteAdmin enable if($errRTN -match 'ok') { Write-Host -ForegroundColor green "Remote admin enabled" } ELSEIF($errRTN -match 'requires elevation') { Write-Host -ForegroundColor red "Remote admin not enabled" ` "The operation requries admin rights"} ELSE { Write-Host -ForegroundColor red "Remote admin not enabled" ` "The error reported was $errRTN" }
Включение общих папок
$errRTN=netsh firewall set service fileAndPrint enable if($errRTN -match 'ok') { Write-Host -ForegroundColor green "Shared folders enabled" } ELSEIF($errRTN -match 'requires elevation') { Write-Host -ForegroundColor red "Shared folders not enabled" ` "The operation requries admin rights"} ELSE { Write-Host -ForegroundColor red "Shared folders not enabled" ` "The error reported was $errRTN" }
Экспорт параметров адаптера в Excel
$strPath="c:\fso\netAdapter.xls" $objExcel=New-Object -ComObject Excel.Application $objExcel.Visible=-1 $WorkBook=$objExcel.Workbooks.Add() $sheet=$workbook.worksheets.item(1) $x=2 $Computer = $env:computerName $objWMIService = Get-WmiObject -class win32_NetworkAdapter ` -computer $Computer for($b=1 ; $b -le 10 ; $b++) {$sheet.Cells.item(1,$b).font.bold=$true} $sheet.Cells.item(1,1)=("Name of Adapter") $sheet.Cells.item(1,2)=("Interface Index") $sheet.Cells.item(1,3)=("Index") $sheet.Cells.item(1,4)=("DeviceID") $sheet.Cells.item(1,5)=("AdapterType") $sheet.Cells.item(1,6)=("MacAddress") $sheet.Cells.item(1,7)=("netconnectionid") $sheet.Cells.item(1,8)=("NetConnectionStatus") $sheet.Cells.item(1,9)=("NetworkAddresses") $sheet.Cells.item(1,10)=("PermanentAddress") ForEach ($objNet in $objWMIService) { $sheet.Cells.item($x, 1)=($objNet.Name) $sheet.Cells.item($x, 2)=($objNet.InterfaceIndex) $sheet.Cells.item($x, 3)=($objNet.index) $sheet.Cells.item($x, 4)=($objNet.DeviceID) $sheet.Cells.item($x, 5)=($objNet.adapterType) $sheet.Cells.item($x, 6)=($objNet.MacAddress) $sheet.Cells.item($x,7)=($objNet.netconnectionid) $sheet.Cells.item($x,8)=($objNet.NetConnectionStatus) $sheet.Cells.item($x,9)=($objNet.NetworkAddresses) $sheet.Cells.item($x,10)=($objNet.PermanentAddress) If($objNet.AdapterType -notMatch 'ethernet') { $sheet.Cells.item($x,5).font.colorIndex=3 # 32 is blue 16 silver/gray 8 is Aqua, 4 is green, 3 is red $sheet.Cells.item($x,5).font.bold=$true } $x++ } $range = $sheet.usedRange $range.EntireColumn.AutoFit() IF(Test-Path $strPath) { Remove-Item $strPath $objExcel.ActiveWorkbook.SaveAs($strPath) } ELSE { $objExcel.ActiveWorkbook.SaveAs($strPath) }