cmd appel à powershell “vous devez fournir une valeur de l'expression sur le côté droit de la " - " opérateur”
Avant d'aller plus loin, mon expérience avec Powershell s'élève à seulement 2 jours.
Je suis en train d'appeler un script powershell à partir de la ligne de commande avec quatre paramètres ont été ajoutés à la commande. Le script powershell simplement nettoie d'un fichier CSV et fait une copie du fichier, à chaque étape de nettoyage.
Les variables a
, b
, c
et d
dans le script concernent les nouveaux noms de fichiers (y compris l'adresse complète).
Script PowerShell
param(
[string]$a,
[string]$b,
[string]$c,
[string]$d
)
Get-Content $a | ForEach-Object { $_ -replace """""""""""","""""" } | Set-Content $b -Force
Get-Content $b | ForEach-Object { $_ -replace """""""","""" } | Set-Content $c -Force
Get-Content $c | ForEach-Object { $_ -replace """""","" } | Set-Content $d -Force
Script De Commande
La commande de script ci-dessous est ce que je suis en train de lancer dans cmd
(note: j'ai prises sur le réel adresses).
powershell.exe '\\somefileaddress\CleanData.ps1'
-a "\\someaddress\DrFA-C.csv"
-b "\\someaddress\DrFA-C_2.csv"
-c "\\someaddress\DrFA-C_3.csv"
-d "\\someaddress\DrFA-C_4.csv"
Le message d'erreur que j'obtiens est:
Vous devez fournir une valeur de l'expression sur le côté droit de la '-' opérateur.
Vous devez vous connecter pour publier un commentaire.
Je suis assez sûr que le problème n'est pas avec votre script, mais avec la façon dont vous êtes en l'appelant. Cela fonctionne pour moi (sans les retours à la ligne qui ont été insérées pour plus de clarté):
Vous utilisez des guillemets, ce qui en fait une chaîne extensible (l'analyseur est d'aller le chercher Powershell opérateurs dans la chaîne, et essayez d'appeler les opérateurs lors de l'analyse). Le - est une Powershell de l'opérateur, de sorte qu'il pense que vous êtes tring à faire une sorte de soustraction de l'opération.
Commutateur de guillemets simples pour lui indiquer que vous souhaitez que la chaîne interprétée littéralement.
Ne ressemble pas à cette réponse répond à cette question en particulier, mais juste au cas où il aide à quelqu'un un jour:
J'ai eu ce message d'erreur lors de l'exécution d'un script qui a été écrit pour PowerShell v5 sur un ordinateur Windows 7 avec PowerShell v2 installé (à la version par défaut de Windows 7). C'était vraiment une ligne complexe et la façon dont il a été écrit juste de ne pas bien jouer avec les anciennes versions de PowerShell.
Exécuter ce code dans PowerShell:
$PSVersionTable.PSVersion.Major
et si elle renvoie2
(ou peut-être même3
?) vous pouvez essayer de mettre à niveau votre version de PowerShell en installant cette mise à jour de windows.