Il est souvent utile de connaître le type de connexion utilisée lors de l’exécution de certaines opérations sur un poste de travail, afin de réaliser ou non certaines opérations.
Par exemple, lors d’une mise à jour d’une version de Windows, il peut être souhaitable de bloquer la mise à jour si elle n’est pas exécutée sur le réseau interne de l’entreprise, ou au minimum d’avertir l’utilisateur des risques de l’opération.
Ou encore, si l’ordinateur est connecté en VPN, la mise à jour du client VPN demandera que la nouvelle version de la solution VPN soit téléchargée dans son intégralité avant que l’installation n’ait lieu…
Le script fourni ici commence par déterminer quelle est l’interface réseau utilisée pour la connexion au domaine, puis vérifie quel est son type, d’après les informations relatives au medium physique : 802.3, 802.11, Bluetooth, …
Les types ne correspondant pas à une connexion filaire ou sans fil sont considérés comme relevant du VPN.
<#
.SYNOPSIS
Get the type of network connection
.DESCRIPTION
Retrieve the network connection type when a computer is connected to a domain:
- LAN
- Wireless
- VPN
.EXAMPLE
Get-NetworkConnectionType
.INPUTS
none
.OUTPUTS
One of these string values:
- LAN
- Wireless
- VPN
.NOTES
version 1.0: initial version
#>
function Get-NetworkConnectionType {
[CmdletBinding()]
[OutputType([String])]
Param ()
begin {
$connectionType = "n/a"
}
process {
# get the connection which is used for domain access
$connectionProfile = Get-NetConnectionProfile | Where-Object { $_.NetworkCategory -eq "DomainAuthenticated" }
# if a connection exists, check the adapter in use
if ($null -ne $connectionProfile) {
# get the adapter
$connectionAdapter = Get-NetAdapter -Name $connectionProfile.InterfaceAlias
switch ($connectionAdapter.PhysicalMediaType ) {
"802.3" {
$connectionType = "LAN"
break;
}
"Native 802.11" {
$connectionType = "Wireless"
break;
}
"Bluetooth" {
$connectionType = "Wireless"
break;
}
default {
$connectionType = "VPN"
}
}
}
}
end {
Write-Output $connectionType
}
}