Paramètre "composé" d'un cmdlet
Bonjour,
Question d'un gros nul en PS.
Est-il réellement impossible de "composer" le paramètre d'un cmdlet ?
Ceci fonctionne comme attendu
Code:
1 2 3 4 5 6
| $PrinterS = @( ("1", "Drivers1"),
("2", "Drivers2") )
foreach ( $printer in $PrinterS)
{write-host "Printer"$Printer[0]" : Divers "$Printer[1]
$printername="Printer + $Printer[0]
Add-Printer -Name $printername -DriverName $Printer[1] -PortName "LPT1:" -Shared -ShareName $printername –Published} |
Alors que ceci génère une erreur au niveau du paramètre -Name et -Sharename de Add-Printer
Code:
1 2 3 4 5
| $PrinterS = @( ("1", "Drivers1"),
("2", "Drivers2") )
foreach ( $printer in $PrinterS)
{write-host "Printer"$Printer[0]" : Divers "$Printer[1]
Add-Printer -Name "Printer"$Printer[0] -DriverName $Printer[1] -PortName "LPT1:" -Shared -ShareName "Printer"$Printer[0] –Published} |
"Printer"$Printer[0] est interprété bizarrement. A priori "Printer 1 Drivers1[0]" pour la première occurrence, ce qui fait que "1 Drivers1[0]" sont des paramètres inconnus.
"Printer$Printer[0]" ne marche pas mieux : interprété litéralement comme Printer$Printer[0]"
Merci
EDIT
Je donne les deux solutions proposées par @ericlm128 :
Code:
Add-Printer -Name ("Printer"+ $Printer[0]) -DriverName $Printer[1] -PortName "LPT1:" -Shared -ShareName ("Printer"+ $Printer[0]) –Published}
ou bien
Code:
Add-Printer -Name "Printer$($Printer[0])" -DriverName $Printer[1] -PortName "LPT1:" -Shared -ShareName "Printer$($Printer[0])" –Published}
l'utilisation de $() permettant l'exécution de commande à l'intérieur d'une chaîne avec double cote ".