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
Alors que ceci génère une erreur au niveau du paramètre -Name et -Sharename de Add-Printer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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}
"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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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]" ne marche pas mieux : interprété litéralement comme Printer$Printer[0]"
Merci
EDIT
Je donne les deux solutions proposées par @ericlm128 :
ou bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 ".
Code : Sélectionner tout - Visualiser dans une fenêtre à part Add-Printer -Name "Printer$($Printer[0])" -DriverName $Printer[1] -PortName "LPT1:" -Shared -ShareName "Printer$($Printer[0])" –Published}
Partager