Exécution de tâches réseau
Cet exemple s’applique uniquement aux plateformes Windows.
Étant donné que TCP/IP est le protocole réseau le plus couramment utilisé, la plupart des tâches d’administration de protocole réseau de bas niveau impliquent TCP/IP. Dans cette section, nous utilisons PowerShell et WMI pour effectuer ces tâches.
Liste des adresses IP pour un ordinateur
Pour obtenir toutes les adresses IP utilisées sur l’ordinateur local, utilisez la commande suivante :
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExpandProperty IPAddress
Étant donné que la propriété IPAddress d’un objet Win32_NetworkAdapterConfiguration est un tableau, vous devez utiliser le paramètre ExpandProperty de Select-Object
pour afficher la liste complète des adresses.
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
À l’aide de l’applet de commande Get-Member
, vous pouvez voir que la propriété IPAddress est un tableau :
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;}
La propriété IPAddress pour chaque carte réseau est en fait un tableau. Les accolades dans la définition indiquent que adresse IP n’est pas une valeur System.String, mais un tableau de valeurs System.String.
Liste des données de configuration IP
Pour afficher des données de configuration IP détaillées pour chaque carte réseau, utilisez la commande suivante :
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true
L'affichage par défaut de l'objet de configuration de la carte réseau présente un ensemble très limité des informations accessibles. Pour une inspection et une résolution des problèmes approfondis, utilisez Select-Object
ou une applet de commande de mise en forme, telle que Format-List
, pour spécifier les propriétés à afficher.
Dans les réseaux TCP/IP modernes, vous n’êtes probablement pas intéressé par les propriétés IPX ou WINS. Vous pouvez utiliser le paramètre ExcludeProperty de Select-Object
pour masquer les propriétés avec des noms commençant par « WINS » ou « IPX ».
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExcludeProperty IPX*,WINS*
Cette commande retourne des informations détaillées sur DHCP, DNS, routage et d’autres propriétés de configuration IP mineures.
Ping des ordinateurs
Vous pouvez effectuer un test ping simple sur un ordinateur à l’aide de Win32_PingStatus. La commande suivante effectue le test de ping, mais retourne un résultat détaillé :
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"
La réponse de Win32_PingStatus contient 29 propriétés. Vous pouvez utiliser Format-Table
pour sélectionner les propriétés les plus intéressantes pour vous. Le paramètre Autosize de Format-Table
redimensionne les colonnes de la table afin qu'elles s'affichent correctement dans 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
Un StatusCode de 0 indique un test ping réussi.
Vous pouvez utiliser un tableau pour effectuer un test ping sur plusieurs ordinateurs avec une seule commande. Étant donné qu’il existe plusieurs adresses, utilisez la ForEach-Object
pour effectuer un test ping sur chaque adresse séparément :
'127.0.0.1','localhost','bing.com' |
ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
Select-Object -Property Address,ResponseTime,StatusCode
}
Vous pouvez utiliser le même format de commande pour effectuer un test ping sur toutes les adresses d’un sous-réseau, comme un réseau privé qui utilise le numéro de réseau 192.168.1.0 et un masque de sous-réseau C de classe standard (255.255.255.0)., Seules les adresses comprises entre 192.168.1.1 et 192.168.1.254 sont des adresses locales légitimes (0 est toujours réservée au numéro réseau et 255 est une adresse de diffusion de sous-réseau).
Pour représenter un tableau des nombres compris entre 1 et 254 dans PowerShell, utilisez l’expression 1..254
.
Un ping de sous-réseau complet peut être effectué en ajoutant chaque valeur de la plage à une adresse partielle dans l’instruction ping :
1..254| ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
Select-Object -Property Address,ResponseTime,StatusCode
Notez que cette technique pour générer une plage d’adresses peut également être utilisée ailleurs. Vous pouvez générer un ensemble complet d’adresses de cette façon :
$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}
Récupération des propriétés de la carte réseau
Précédemment, nous avons mentionné que vous pouviez récupérer des propriétés de configuration générales à l’aide de la classe Win32_NetworkAdapterConfiguration. Bien qu’elles ne soient pas strictement des informations TCP/IP, les informations de carte réseau telles que les adresses MAC et les types d’adaptateurs peuvent être utiles pour comprendre ce qui se passe avec un ordinateur. Pour obtenir un résumé de ces informations, utilisez la commande suivante :
Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .
Affectation du domaine DNS pour une carte réseau
Pour affecter le domaine DNS pour la résolution automatique de noms, utilisez la méthode SetDNSDomain de l'Win32_NetworkAdapterConfiguration. Le paramètre de requête de Invoke-CimMethod
accepte une chaîne de requête WQL. L’applet de commande appelle la méthode spécifiée sur chaque instance retournée par la requête.
$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql
Le filtrage sur IPEnabled=True
est nécessaire, car même sur un réseau qui utilise uniquement TCP/IP, plusieurs configurations de carte réseau sur un ordinateur ne sont pas vraies cartes TCP/IP. ils sont des éléments logiciels généraux prenant en charge ras, VPN, QoS et d’autres services pour tous les adaptateurs et n’ont donc pas d’adresse propre.
Exécution des tâches de configuration DHCP
La modification des détails du DHCP implique l’utilisation d’un ensemble de cartes réseau, tout comme c'est le cas pour la configuration DNS. Il existe plusieurs actions distinctes que vous pouvez effectuer à l’aide de WMI.
Recherche d’adaptateurs compatibles avec DHCP
Pour rechercher les adaptateurs DHCP sur un ordinateur, utilisez la commande suivante :
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"
Pour exclure des adaptateurs avec des problèmes de configuration IP, vous pouvez récupérer uniquement les adaptateurs compatibles IP :
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"
Récupération des propriétés DHCP
Étant donné que les propriétés liées à DHCP pour un adaptateur commencent généralement par DHCP
, vous pouvez utiliser le paramètre Property de Format-Table
pour afficher uniquement ces propriétés :
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true" |
Format-Table -Property DHCP*
Activation du protocole DHCP sur chaque adaptateur
Pour activer DHCP sur tous les adaptateurs, utilisez la commande suivante :
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
L’utilisation de l’instruction de filtre IPEnabled=True and DHCPEnabled=False
évite d’activer DHCP où elle est déjà activée.
Libération et renouvellement des baux DHCP sur des adaptateurs spécifiques
Les instances de la classe Win32_NetworkAdapterConfiguration ont des méthodes ReleaseDHCPLease
et RenewDHCPLease
. Les deux sont utilisés de la même façon. En général, utilisez ces méthodes si vous devez uniquement libérer ou renouveler les adresses pour une carte réseau sur un sous-réseau spécifique. Le moyen le plus simple de filtrer les adaptateurs sur un sous-réseau consiste à choisir uniquement les configurations d’adaptateurs qui utilisent la passerelle pour ce sous-réseau. Par exemple, la commande suivante libère tous les baux DHCP sur les adaptateurs de l'ordinateur local qui obtiennent des baux DHCP depuis l'adresse 192.168.1.254 :
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
La seule modification du renouvellement d’un bail DHCP consiste à utiliser la méthode RenewDHCPLease
au lieu de la méthode ReleaseDHCPLease
:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql
Note
Lorsque vous utilisez ces méthodes sur un ordinateur distant, sachez que vous pouvez perdre l’accès au système distant si vous y êtes connecté via l’adaptateur avec le bail libéré ou renouvelé.
Publication et renouvellement des baux DHCP sur tous les adaptateurs
Vous pouvez effectuer des versions d’adresses DHCP globales ou des renouvellements sur tous les adaptateurs à l’aide des méthodes Win32_NetworkAdapterConfiguration, des ReleaseDHCPLeaseAll
et des RenewDHCPLeaseAll
.
Toutefois, la commande doit s’appliquer à la classe WMI, plutôt qu’à un adaptateur particulier, car la libération et le renouvellement des baux globalement sont effectués sur la classe, et non sur un adaptateur spécifique. L’applet de commande Invoke-CimMethod
peut appeler les méthodes d’une classe.
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll
Vous pouvez utiliser le même format de commande pour appeler la méthode RenewDHCPLeaseAll :
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll
Création d’un partage réseau
Pour créer un partage réseau, utilisez la méthode Create
de Win32_Share:
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'
}
Cela équivaut à la commande net share
suivante sur Windows :
net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"
Pour appeler une méthode d’une classe WMI qui prend des paramètres, vous devez savoir quels paramètres sont disponibles et les types de ces paramètres. Par exemple, vous pouvez répertorier les méthodes de l'Win32_Class avec les commandes suivantes :
(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}
Utilisez la commande suivante pour répertorier les paramètres de la méthode 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}
Vous pouvez également lire la documentation concernant la méthode Create de la classe Win32_Share.
Suppression d’un partage réseau
Vous pouvez supprimer un partage réseau avec Win32_Share, mais le processus est légèrement différent de la création d’un partage, car vous devez récupérer l’instance spécifique à supprimer, plutôt que la classe Win32_Share. L’exemple suivant supprime le partage TempShare:
$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql
Connexion d’un lecteur réseau accessible par Windows
L’applet de commande New-PSDrive
peut créer un lecteur PowerShell mappé à un partage réseau.
New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
Toutefois, les lecteurs créés de cette façon ne sont disponibles que pour la session PowerShell où ils sont créés. Pour mapper un lecteur disponible en dehors de PowerShell (ou dans d'autres sessions PowerShell), vous devez utiliser le paramètre Persist.
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
Note
Les lecteurs mappés de manière permanente peuvent ne pas être disponibles lors de l’exécution dans un contexte élevé. Il s’agit du comportement par défaut de l’UAC Windows. Pour plus d’informations, consultez l’article suivant :