function Get-NICAddresses
{
<#
.SYNOPSIS
Function discovers all NIC addresses.
.DESCRIPTION
Function discovers all NIC addresses and remember them in NICAddresses table.
.EXAMPLE
Get-NICAddresses
#>
if ($script:NICAddresses.Count -gt 0) {
return
}
$list = [Net.NetworkInformation.NetworkInterface]::GetAllNetworkInterfaces()
foreach ($interface in $list) {
if ($interface.OperationalStatus -eq [Net.NetworkInformation.OperationalStatus]::Up) {
if (($interface.NetworkInterfaceType -eq [Net.NetworkInformation.NetworkInterfaceType]::Ethernet) -or
($interface.NetworkInterfaceType -eq [Net.NetworkInformation.NetworkInterfaceType]::Ethernet3Megabit) -or
($interface.NetworkInterfaceType -eq [Net.NetworkInformation.NetworkInterfaceType]::FastEthernetFx) -or
($interface.NetworkInterfaceType -eq [Net.NetworkInformation.NetworkInterfaceType]::FastEthernetT) -or
($interface.NetworkInterfaceType -eq [Net.NetworkInformation.NetworkInterfaceType]::GigabitEthernet)) {
$addresses = $interface.GetIPProperties().UnicastAddresses
foreach ($address in $addresses) {
if ($address.Address.AddressFamily -eq [Net.Sockets.AddressFamily]::InterNetwork) {
$script:NICAddresses += ,@($address.Address.IPAddressToString, $address.IPv4Mask.IPAddressToString)
}
}
}
}
}
}
function Test-Port
{
<#
.SYNOPSIS
Tests if connection from source to target can be established.
.DESCRIPTION
Tests if connection from source to target on particular port can be established.
.PARAMETER Source
Source IPAddress.
.PARAMETER Target
Target IPAddress.
.PARAMETER Port
Port number.
.PARAMETER TimeOut
Timeout.
.EXAMPLE
Test-Port -Source "127.0.0.1" -Target "127.0.0.2" -Port 1234 -TimeOut 1000
#>
Param (
[string] $Source,
[string] $Target,
[int] $Port,
[int] $TimeOut = 1000
)
function Compare-IPAddressesSubnet
{
<#
.SYNOPSIS
Checks if two IP addresses are in the same subnet.
.DESCRIPTION
Compare if two IP addresses are in the same subnet.
.PARAMETER ip1
IPAddress one.
.PARAMETER ip2
IPAddress two.
.PARAMETER mask
Mask for subnet.
.EXAMPLE
Compare-IPAddressesSubnet -ip1 "127.0.0.1" -ip2 "127.0.0.2" -mask "255.255.255.0"
#>
Param(
[IPAddress] $ip1,
[IPAddress] $ip2,
[IPAddress] $mask
)
function Invoke-CIMSubscribe
{
<#
.SYNOPSIS
Subscribes target to CIM indications.
.DESCRIPTION
Subscribes CIMClient object to CIM Indications.
.PARAMETER Cim
CIMClient object.
.PARAMETER HostName
Hostname to use for registry info.
.PARAMETER Force
Force registration even if registry says something else.
.EXAMPLE
Invoke-CIMSubscribe -Cim $Cim -HostName 'localhost' -Force
#>
Param (
[object] $Cim,
[string] $HostName,
[switch] $Force
)
if ($Force -or ! $Cim.Subscribed) {
# Ensure that there is no subscription, if so unsubscribe
if (! $Force -and (Test-TargetSubscribed -Cim $Cim)) {
Invoke-CIMUnsubscribe -Cim $Cim
}
function Add-CIMIndications {
<#
.SYNOPSIS
Extends CIMClient object with Indications functionality.
.DESCRIPTION
Function adds CIM Indications functionality to passed CIMClient object.
.PARAMETER CIMClientObject
CIMClient object to extend.
.PARAMETER RegKeyListener
Registry path to CIM Listener settings.
.PARAMETER RegKeySubscribed
Registry path to CIM subscriptions.
.EXAMPLE
$cim = Add-CIMIndications -CIMClientObject $Cim -RegKeyListener "RegPathForListener" -RegKeySubscribed "RegPathForSubscribe"
#>
Param (
[object] $CIMClientObject,
[string] $RegKeyListener,
[string] $RegKeySubscribed
)
$cimSubscribe = {
<#
.SYNOPSIS
Subscribes to CIM Indications.
.DESCRIPTION
Subscribes current CIMClient object to CIM Indications.
.PARAMETER HostName
Hostname to use for registry info.
.PARAMETER Force
Force registration even if registry says something else.
.EXAMPLE
$cim.Subscribe('localhost', $True)
#>
Param (
[string] $HostName,
[bool] $Force = $False
)