Windows build number: Microsoft Windows [Version 10.0.18363.657]
Windows Terminal Version: 0.9.433.0
Exécutez ceci dans PowerShell:
wt `
new-tab -p PowerShell` Core`;`
split-pane -H -p Windows` PowerShell `;`
split-pane -p cmd
Je devrais avoir un nouvel onglet divisé deux fois (trois volets)
[error 0x80070002 when launching `
split-pane -H -p "Windows PowerShell"']
et
[error 0x80070002 when launching `
split-pane -H -p "Windows PowerShell"']
J'ai finalement trouvé que si j'ajoute un espace après chaque ;
cela fonctionne (sauf pour # 4618):
wt `
new-tab -p PowerShell` Core`; `
split-pane -H -p Windows` PowerShell `; `
split-pane -p cmd
@Jaykul
J'ai essayé d'ajouter un retour chariot et un saut de ligne aux séparateurs de jetons pour l'analyse de la ligne de commande dans mes tests pour # 4724. Mais quand j'ai essayé d'exécuter votre exemple, il s'avère que la coche arrière n'échappe jamais à la nouvelle ligne à moins qu'elle ne soit précédée d'un espace. Quelle que soit l'application que vous essayez d'appeler. Tout autre caractère (pas seulement le point-virgule) directement devant la graduation arrière ne déclenchera pas l'échappement de la nouvelle ligne dans la console PowerShell. Pouvez-vous confirmer? Je suppose que c'est plutôt un problème PowerShell.
Si vous exécutez votre exemple depuis un shell CMD (nouvelle ligne échappée avec ^
), cela fonctionne déjà même sans avoir \ r et \ n comme séparateurs de jetons dans le code source du terminal.
wt ^
new-tab -p "PowerShell Core";^
split-pane -H -p Windows` PowerShell ;^
split-pane -p cmd
En fait, ouais, quand j'exécute l'exemple du problème d'origine mais que je mets des espaces devant les backticks d'échappement de nouvelle ligne, j'obtiens ceci:
On dirait un problème dans la façon dont PowerShell gère les nouvelles lignes échappées.
Vous avez absolument raison. Je suis désolé - je voulais proposer un exemple purement PowerShell de cette syntaxe (ou utiliser echoargs.exe) afin de pouvoir dire avec certitude ce qui se passait, et je ne l'ai pas fait avant de déposer le problème. Au cas où cela faciliterait les discussions avec d'autres utilisateurs de PowerShell comme moi - qui oublient que PowerShell fait des chaînes _implied_ - voici un exemple simple de ce que PowerShell fait mal:
Remarque: Write-Host prend n'importe quel nombre de paramètres de chaînes
Et bien sûr, si vous passez une chaîne étrange comme celle-ci à une commande "native", PowerShell la met entre guillemets:
En gros, voici ce qui se passe:
Lorsque nous ne laissons pas d'espace entre le `;
(que nous avons échappé, donc c'est juste une chaîne) et la nouvelle ligne, PowerShell est obligé de supposer que cela fait partie d'une chaîne, et non d'une ligne séparée -continuation mark. Nous pouvons éviter cela en le séparant de la chaîne _implicitement_ avec un espace (comme je l'ai fait dans ma "solution de contournement" ci-dessus), ou explicitement, en mettant des guillemets autour de la chaîne:
wt `
new-tab -p "PowerShell Core" ";"`
split-pane -H -p "Windows PowerShell" ";"`
split-pane -p cmd