2017-10-19 8 views
0

J'ai des problèmes avec l'espacement des chemins. Cela fonctionne:Processus de démarrage avec espace de chemin

$mediaPath = 'C:\Scripts' 
$installerPath = Join-Path $mediaPath -ChildPath 'test.msi' 

Start-Process -FilePath msiexec.exe -ArgumentList "/i $installerPath /quiet" -Wait -NoNewWindow 

Cela ne signifie pas:

$mediaPath = 'C:\Scripts\Directory with a space\foo' 

Comment gérer les espaces dans le chemin lors du passage des arguments à Start-Process?

Répondre

1

Vous passez les arguments incorrectement.

$media = 'C:\Scripts\test.msi' 

Start-Process -FilePath msiexec -ArgumentList @('/i',"`"$media`"",'/quiet') -Wait -NoNewWindow 
+0

Merci. Pouvez-vous expliquer l'exigence de backticks 'et de citations? '' 'Je suis nouveau sur PowerShell – LightningWar

+1

@LightningWar Ce sont des caractères d'échappement qui transmettent l'argument sous la forme d'une chaîne entre guillemets, en autorisant des espaces dans l'argument.Si vous essayez de passer tous vos arguments en une seule chaîne, il interprète string en tant qu'argument et c'est au programme que vous appelez de l'interpréter, d'où le tableau de chaînes que je lui passe dans cet exemple Note: les caractères d'échappement ne sont pas interprétés dans les littéraux de chaîne (''' '). – TheIncorrigible1