0

先に進む前に、Powershell を使用した経験はわずか 2 日間です。

コマンドに 4 つのパラメーターを追加して、コマンド ラインから powershell スクリプトを呼び出そうとしています。PowerShell スクリプトは単純に CSV ファイルをクリーンアップし、クリーニングの各段階でファイルのコピーを作成します。

スクリプト内の変数abcおよびdは、新しいファイル名 (完全なアドレスを含む) に関連しています。

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

コマンド スクリプト

以下のコマンド スクリプトは、実行しようとしているものですcmd(注: 実際のアドレスを取り出しています)。

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"

私が得ているエラーメッセージは次のとおりです。

「-」演算子の右側に値式を指定する必要があります。

4

3 に答える 3

2

問題はスクリプトにあるのではなく、呼び出し方にあると確信しています。これは私にとってはうまくいきます(明確にするために挿入された改行なしで):

powershell.exe -Command "& '\\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'"
于 2013-04-22T15:08:39.030 に答える
1

二重引用符を使用しているため、展開可能な文字列になります (パーサーは文字列内の Powershell 演算子を探し、解析中にそれらの演算子を呼び出そうとします)。- は Powershell 演算子であるため、何らかの減算操作を実行しようとしていると見なされます。

一重引用符に切り替えて、その文字列を文字どおりに解釈することを伝えます。

于 2013-04-22T14:45:13.823 に答える