Est-il possible de fractionner une ligne de commande PowerShell sur plusieurs lignes?
En Visual Basic, je peux utiliser le trait de soulignement ( _
) pour continuer la commande dans la ligne suivante.
powershell
multiline
eXXL
la source
la source
sh
commande, les conventions bash sont valables pour que vous puissiez utiliser la barre oblique inverse. Dans ce cas, votre script doit également avoir des terminaisons de style Unix.Réponses:
Vous pouvez utiliser un espace suivi de l'accent grave (backtick):
Cependant, cela n'est nécessaire que dans les cas indiqués ci-dessus. Habituellement, vous obtenez la continuation de ligne automatique lorsqu'une commande ne peut pas être terminée syntaxiquement à ce stade. Cela inclut le démarrage d'un nouvel élément de pipeline:
fonctionnera sans problème car après la
|
commande, la commande ne peut pas être terminée car il manque un autre élément de pipeline. L'ouverture d'accolades ou tout autre type de parenthèses permettra également la continuation de la ligne directement:Semblable à la
|
virgule, cela fonctionnera également dans certains contextes:Gardez à l'esprit, cependant, que pour l' insertion automatique des points-virgules de JavaScript , certaines choses sont également interrompues car le saut de ligne se produit à un point où il est précédé d'une instruction valide:
ne fonctionnera pas.
Enfin, les chaînes (dans toutes les variétés) peuvent également s'étendre au-delà d'une seule ligne:
Ils incluent alors les sauts de ligne dans la chaîne.
la source
|
et{
.Je viens de découvrir qu'il ne doit y avoir aucun caractère entre la tique arrière et le saut de ligne. Même les espaces blancs empêcheront la commande de fonctionner.
la source
Dans la plupart des langages de type C, je souhaite délibérément placer mes accolades là où je pense qu'elles rendent le code plus facile à lire.
L'analyseur de PowerShell reconnaît quand une instruction n'est clairement pas terminée et regarde la ligne suivante. Par exemple, imaginez une applet de commande qui accepte un paramètre de bloc de script facultatif:
si le bloc de script est très long, vous voudrez peut-être écrire:
Mais cela ne fonctionnera pas: l'analyseur verra deux déclarations. Le premier est
Get-Foo
et le second est un bloc de script. Au lieu de cela, j'écris:Je pourrais utiliser le caractère de continuation de ligne (`) mais cela rend le code difficile à lire et invite les bogues.
Parce que ce cas nécessite que l'accolade ouverte soit sur la ligne précédente, je suis ce modèle partout:
De même, dans le cas de longs pipelines, je casse après le caractère pipe (
|
):la source
if
etforeach
ettry
alors? ils autorisent les blocs de script sur la ligne suivante ... cela signifie que cela peut être possiblePour développer la réponse de cristobalito :
Par exemple:
Signez un script PowerShell sur la ligne de commande. Aucune rupture de ligne.
la source
Dans PowerShell et PowerShell ISE, il est également possible d'utiliser Shift+ Enterà la fin de chaque ligne pour l'édition multiligne (au lieu du backtick standard
`
).la source
SHIFT-ENTER
astuce.PSReadLine
module ou d'un équivalent. Dans les fonctions d'entrée de console Windows standard,Enter
etShift+Enter
sont fonctionnellement équivalentes.PSReadline
module fonctionne uniquement sur l' hôte de la console (pas ISE). 2) neShift+Enter
fonctionne dans l'hôte de la console que lors de l'utilisationPSReadline
. 3)Shift+Enter
a toujours travaillé dans l'ISE. 4) Si vous utilisez l'hôte de console sansPSReadline
, celaShift+Enter
équivaut fonctionnellement à appuyer surEnter
.Si vous essayez de séparer des chaînes en plusieurs lignes, vous pouvez utiliser le "+". Par exemple:
Ressemblera à:
la source
Je suppose que vous parlez sur la ligne de commande - si c'est dans un script, alors une nouvelle ligne agit comme un délimiteur de commande.
Sur la ligne de commande, utilisez un point-virgule ';'
la source
;
pour séparer la commande\\
sur toutes les barres obliques inverses\
."'
pour passer une adresse sûre pour changer de commande comme "'PATH'".Cette commande ps1 installe le certificat pfx local.
la source
Il y a tellement de façons de continuer une ligne en PowerShell, avec des tuyaux, des crochets, des parenthèses, des opérateurs, des points, même avec une virgule. Voici un blog à ce sujet: https://get-powershellblog.blogspot.com/2017/07/bye-bye-backtick-natural-line.html
Vous pouvez continuer juste après des déclarations comme foreach et si aussi.
la source
la source
n'utilise pas de guillemets
la source
Utilisez simplement `caractère pour séparer la commande sur plusieurs lignes
la source
Ajoutez simplement un étui d'angle ici. Cela pourrait vous faire économiser 5 minutes. Si vous utilisez une chaîne d'actions, vous devez mettre "." à la fin de la ligne, laissez un espace suivi du "` "(backtick). Je l'ai découvert à la dure.
la source