Partager via


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 :