Espaces provoquer divisé en chemin avec PowerShell
Je vais avoir un problème avec powershell lors de l'appel d'un fichier exe à un chemin d'accès contenant des espaces.
PS C:\Windows Services> invoquer expression "C:\Windows Services\MyService.exe"
Le terme "C:\Windows' n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou d'un programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès a été inclus, vérifiez que le chemin d'accès est correct et essayez à nouveau.
Il semble être la division de l'espace entre les "Fenêtres" et de "Services". Une idée de comment contourner ce problème?
- Utiliser les
&
, l'opérateur d'appel, pour invoquer les commandes dont les noms ou les chemins d'accès sont stockés dans les chaînes entre guillemets et/ou référencés par des variables, comme dans l'acceptation de réponse.Invoke-Expression
n'est pas seulement le tort de l'outil à utiliser dans ce cas particulier, il doit généralement être évitée.
Vous devez vous connecter pour publier un commentaire.
Serait-ce faire ce que vous voulez?:
Vous pouvez échapper à l'espace en utilisant un seul devis et un backtick avant de l'espace:
-replace
sur la variable contenant le chemin d'accès et remplacer 'avec''Invoke-Expression
n'est pas seulement le tort de l'outil à utiliser pour les OP de cas d'utilisation, devrait généralement être évitée.via https://www.vistax64.com/powershell/52905-invoke-expression-exe-has-spaces-its-path.html
Ne sais pas si quelqu'un l'a encore besoin... j'ai besoin d'invoquer msbuild dans powershell et la suite a bien fonctionné:
Il y a un hack que j'ai utilisé depuis le Invoke-Expression fonctionne très bien pour moi.
Vous pouvez définir l'emplacement actuel de la voie avec des espaces, invoquer l'expression, revenir à votre position précédente et de continuer:
Cela ne fonctionne que si le fichier exe n'a pas d'espaces dans son nom.
Espère que cette aide
Pour n'importe quel chemin d'accès du fichier avec l'espace, il suffit de les mettre en double citations de travail dans Windows Powershell. Par exemple, si vous voulez aller au répertoire des Fichiers de Programme, au lieu d'utiliser
qui va induire en erreur, il suffit d'utiliser la commande suivante va résoudre le problème:
Cela a fonctionné pour moi:
wslLauncher.ps1
qui était situé dans un chemin qui contenait un espace, à partir d'Eclipse en Java. La ligne de code exacte était:String command = "powershell.exe & '"+launcherPath+launcherName+"' ";
À l'aide de Powershell sur Windows10 en 2018, ce qui a fonctionné pour moi a été tout simplement pour remplacer les guillemets
"
par de simples citations'
. L'ajout de la backtick avant de l'espace, comme le suggère une réponse, a battu le chemin.ParameterArgumentValidationError
.Pouvez utiliser le
.
opérateur point.ou la
Start-Process
commandeou à l'aide de
ProcessStartInfo
etProcess
Veuillez utiliser le présent simple doublure:
Essayer ce, simple et sans beaucoup de changements:
invoquer l'expression "'C:\Windows Services\MyService.exe'"
à l'aide de simples citations au début et à la fin du chemin d'accès.
Vient de mettre
${yourpathtofile/folder}
PowerShell ne compte pas les espaces, à dire PowerShell pour examiner le chemin d'accès complet, y compris les espaces ajouter votre chemin entre ${ & }