J'ai créé un script pour modifier mon IP
adresse/masque et VLAN ID
d'une interface, mais le problème est que, pour modifier la VLAN ID
J'ai besoin d'exécuter un PowerShell
commande. Ma variable contenant le nom de l'interface contient un espace, je dois donc la mettre entre guillemets. Le problème est que je dois insérer deux variables pour la même interfaceName
une avec des guillemets simples pour la commande Powershell et une autre pour la commande batch netsh
sinon, je reçois une erreur. Voici mon fichier batch :
:: Configuration Variables
set ifName='Ethernet 2'
set connectionName="Ethernet 2"
set ipAddress=10.88.167.27
set subnetMask=255.255.255.240
set vlanID=100
:: set defaultGateway=x.x.x.x
:: set primaryDNS=x.x.x.x
:: set alternateDNS=x.x.x.x
:: Change of IP address and NetMask ::
netsh interface ipv4 set address name=%connectionName% source=static addr=%ipAddress% mask=%subnetMask%
:: Change VLAN ID ::
powershell -Command "& {Set-NetAdapter -Name %ifName% -VlanID %vlanID% -Confirm:$false}"
echo The VLAN ID of %ifName% has been successfully changed to %vlanID%
pause > null
Mon script batch script fonctionne bien mais je veux avoir une seule variable pour le nom de l'interface, au lieu de deux. Mon problème est le suivant :
Si j'utilise ifName
dans la commande de changement d'adresse IP, j'obtiens l'erreur suivante : The filename, directory name, or volume label syntax is incorrect.
.
Si j'utilise le connectionName
pour la commande PowerShell avec des guillemets doubles, j'ai obtenu l'erreur suivante :
Set-NetAdapter : A positional parameter cannot be found that accepts argument '2'.
At line:1 char:4
+ & {Set-NetAdapter -Name Ethernet 2 -VlanID 100 -Confirm:$false}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-NetAdapter], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Set-NetAdapter
J'ai même essayé de mettre la commande Powershell entre guillemets simples et de l'utiliser à l'intérieur de connectionName
comme ceci :
powershell -Command '& {Set-NetAdapter -Name %connectionName% -VlanID %vlanID% -Confirm:$false}'
mais le VLAN de l'interface réseau reste le même.