PowerShell: la combinaison de tracés à l'aide d'une variable

Ce doit être quelque chose d'évident, mais je ne peux pas obtenir que cela fonctionne.

Je suis en train de construire une variable qui doit contenir le chemin d'accès à un fichier existant, à l'aide d'une variable d'environnement ($env:programfiles(x86)). Cependant je continue à faire des erreurs, et je ne vois pas pourquoi.

Cela fonctionne bien (si le fichier existe):

PS C:\> $f = "C:\Program Files (x86)" + '\sometextfile.txt'
PS C:\> $f
C:\Program Files (x86)\sometextfile.txt
PS C:\> gci $f
    Directory: C:\Program Files (x86)
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        13/12/2010     14:03          0 sometextfile.txt
PS C:\>

Toutefois, cela ne signifie pas:

PS C:\> "$env:programfiles(x86)"
C:\Program Files(x86)
PS C:\> $f = "$env:ProgramFiles(x86)" + '\sometextfile.txt'
PS C:\> $f
C:\Program Files(x86)\sometextfile.txt
PS C:\> gci $f
Get-ChildItem : Cannot find path 'C:\Program Files(x86)\sometextfile.txt' because it does not exist.
At line:1 char:4
+ gci <<<<  $f
    + CategoryInfo          : ObjectNotFound: (C:\Program Files(x86)\sometextfile.txt:String) [Get-ChildItem], ItemNot
   FoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Ce qui se passe, et comment puis-je résoudre ce problème?

  • Est le manque d'espace dans le deuxième exemple, juste une faute de frappe? "Program Files (x86)" vs "Program Files(x86)"
  • il n'est pas, je l'obtenir sans trop d'espace. très étrange
  • non, sur un système 64 bits, vous obtenez deux variables d'environnement: ${env:programfiles} et ${env:programfiles(x86)}
  • Peut-être utile: geekswithblogs.net/Lance/archive/2009/12/29/...
InformationsquelleAutor jeroenh | 2010-12-13