2017-06-29 2 views
1

Ce script fonctionneComment appeler un nom de fichier avec des paramètres stockés dans un objet PowerShell?

$runFile = '.\runFile.ps1' 
& $runFile 

Ce script ne

$runFile = '.\runFile.ps1 -var "1"' 
& $runFile 

Le second ne semble pas fonctionner parce que je suis en train de runFile.ps1 appelé à une variable.

Est-ce possible en PowerShell?

+0

@TessellatingHeckler - en fait non, j'ai lancé & $ runFile. Désolé, ce n'est pas mon vrai code, je viens d'écrire un exemple. – Diskdrive

+0

@TessellatingHeckler - Je reçois cette erreur quand je fais & &: Le terme '. \ RunFile.ps1 -var "1"' n'est pas reconnu comme le nom d'une cmdlet, d'une fonction, d'un fichier de script ou d'un programme utilisable. Vérifiez l'orthographe du nom ou, si un chemin a été inclus, vérifiez que le chemin est correct et réessayez. – Diskdrive

+0

@TessellatingHeckler - ok donc je peux le faire "& $ runFile $ p", cependant, j'ai plusieurs paramètres dans $ p et il le traite comme le premier paramètre – Diskdrive

Répondre

0

Au lieu d'utiliser . ou & pour appeler, utilisez Invoke-Expression.

En supposant un runFile.ps1 avec le contenu suivant

## runFile.ps1 
param (
    $var = "default1", 
    $p = "default2" 
) 

Write-Host -ForegroundColor Green -Object $var 
Write-Host -ForegroundColor Blue -Object $p 

Faites ceci:

$run = ".\runFile.ps1 -var 'awesome' -p 'cool stuff'" 
Invoke-Expression -Command $run 

devient délicat Citation. Faites attention.