ファイル内のパラメーターを置換するPowershell

user5544

C#アプリケーションから呼び出されるPsスクリプトがあります。

Powershellスクリプトはこの形式で呼び出されています。

            var scriptFile = "./run_script.ps1 " +
                             $"-sql_server {'"' + serverName + '"'} " +
                             $"-database {'"' + dbName + '"'} ";

        MessageBox.Show(scriptFile);

            var startInfo = new ProcessStartInfo
            {
                FileName = @"powershell.exe",
                Arguments = scriptFile,
                RedirectStandardOutput = true,
                RedirectStandardError = true,
                UseShellExecute = false,
                CreateNoWindow = true
            };

            var process = new Process { StartInfo = startInfo };
            process.Start();

の値はservername構成ファイルから読み取られています。メッセージボックスには、以下の文字列が表示されます

./run_script.ps1 -sql_server "**Server1,5002**" -database "Test"

ただし、スクリプトファイルから

param ($sql_server,$database)
write-output "The deployment server is $sql_server"

C#アプリケーションからの出力は以下にあります

展開サーバーはServer15002です

ポート番号が削除され、空のスペースに置き換えられているため、SQL接続が失敗します。驚くべきことは、パラメータがmoから出力されるときです

これを引き起こしている可能性があるものがわからなくなったので、C#アプリケーションをデバッグしました。これにより、文字列がPsファイルに送信されていることがわかります。

mklement0

あなたの場合、最も簡単な解決策は、-File CLIパラメーターを明示的に使用することです

Arguments = "-File " + scriptFile

-File構文"..."引用はさておき、スクリプトファイルに渡される引数がリテラルとして解釈されることを保証します

がない-File場合、powershell.exeデフォルトは-Command/-cになります。これにより、引数はPowerShellコマンドラインとして解釈されます。つまり、"..."個々の引数の構文引用符を取り除いた後、引数はスペースで連結され、結果のコマンドラインは同じように解釈されます。 PowerShellの内部からであるため、引用符で囲ま**Server1,5002**れていないものは配列として解釈されます。

PowerShell [Core] v6 +(pwsh)のデフォルトが-File。になっていることに注意してください


コメントで指摘しているように、引数の1つとして実際の配列を渡す必要があるためサポートされいません)、/必要なので、解決策は引数文字列に引用符を使用するか、-を埋め込むことです。引用の内側にあなたの文字列:-Command-c-File'...'\"...\""..."

var scriptFile = 
  $"./run_script.ps1 -sql_server '{serverName}' -database '{dbName}'";

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パターンの前にファイル内の行を置換する

分類Dev

テキストファイルのパラメータを置き換える

分類Dev

PowerShell:ファイルにパラメーターを提供する

分類Dev

CMD(BAT)ファイルの奇妙なパラメータ置換

分類Dev

JSONファイルの特定のパラメーターをPythonのKeyValueに置き換える方法は?

分類Dev

文字列をファイル内のパターンに置き換える

分類Dev

ファイル内のパラメーターを照合し、等しい文字の後の値のみを置き換えます

分類Dev

ファイル内のパターンをスペースに置き換える必要があります

分類Dev

最初のパラメータでファイル内のパラメータを変更する方法

分類Dev

フォルダー内のすべてのファイルの文字列を置き換えるPowershell

分類Dev

スラッシュを含む可能性のあるファイル内のパターンの最初の出現を置き換えます

分類Dev

あるファイル(.properties)のパラメーター値を別のファイル(.json)の値から置き換える

分類Dev

ファイル内のすべての行をsedで置き換えると、行内のパターンの最初の出現が置換されます。

分類Dev

ファイル内のすべての行をsedで置き換えると、行内のパターンの最初の出現が置換されます。

分類Dev

ファイル内のパターンを2番目のファイル内のパターンに置き換えます

分類Dev

ファイルの宣言されたパス内でパラメーターの名前を使用する方法-java

分類Dev

ファイル内のアポストロフィを含むパターンを置き換えます

分類Dev

ファイル内のアポストロフィを含むパターンを置き換えます

分類Dev

Rのパターン間のファイル内の複数の行を置き換える

分類Dev

tsファイル内の複数の値の角度変換を行い、パラメータを設定するにはどうすればよいですか?

分類Dev

ディレクトリ内の最新のファイル名に基づいてテキストファイル内のパラメータを置き換える

分類Dev

PowerShell関数/スクリプトのパラメーターとしてファイル名を使用する

分類Dev

ファイル内の特定のパターンをsedまたはreplaceで置き換えます

分類Dev

ファイル内の特定のパターンをsedまたはreplaceで置き換えます

分類Dev

bashは、ファイル内の複数行のテキストをパターンに置き換えます

分類Dev

パターンを検索し、ファイル内の値を置き換えます

分類Dev

ファイル内の解析されたパラメータ値に基づいて、ファイルの内容を他のファイルに分割する

分類Dev

ファイルマッチングパターン内の行を検索し、置換します

分類Dev

ファイル内の1つのパラメータのみを変更する方法

Related 関連記事

  1. 1

    パターンの前にファイル内の行を置換する

  2. 2

    テキストファイルのパラメータを置き換える

  3. 3

    PowerShell:ファイルにパラメーターを提供する

  4. 4

    CMD(BAT)ファイルの奇妙なパラメータ置換

  5. 5

    JSONファイルの特定のパラメーターをPythonのKeyValueに置き換える方法は?

  6. 6

    文字列をファイル内のパターンに置き換える

  7. 7

    ファイル内のパラメーターを照合し、等しい文字の後の値のみを置き換えます

  8. 8

    ファイル内のパターンをスペースに置き換える必要があります

  9. 9

    最初のパラメータでファイル内のパラメータを変更する方法

  10. 10

    フォルダー内のすべてのファイルの文字列を置き換えるPowershell

  11. 11

    スラッシュを含む可能性のあるファイル内のパターンの最初の出現を置き換えます

  12. 12

    あるファイル(.properties)のパラメーター値を別のファイル(.json)の値から置き換える

  13. 13

    ファイル内のすべての行をsedで置き換えると、行内のパターンの最初の出現が置換されます。

  14. 14

    ファイル内のすべての行をsedで置き換えると、行内のパターンの最初の出現が置換されます。

  15. 15

    ファイル内のパターンを2番目のファイル内のパターンに置き換えます

  16. 16

    ファイルの宣言されたパス内でパラメーターの名前を使用する方法-java

  17. 17

    ファイル内のアポストロフィを含むパターンを置き換えます

  18. 18

    ファイル内のアポストロフィを含むパターンを置き換えます

  19. 19

    Rのパターン間のファイル内の複数の行を置き換える

  20. 20

    tsファイル内の複数の値の角度変換を行い、パラメータを設定するにはどうすればよいですか?

  21. 21

    ディレクトリ内の最新のファイル名に基づいてテキストファイル内のパラメータを置き換える

  22. 22

    PowerShell関数/スクリプトのパラメーターとしてファイル名を使用する

  23. 23

    ファイル内の特定のパターンをsedまたはreplaceで置き換えます

  24. 24

    ファイル内の特定のパターンをsedまたはreplaceで置き換えます

  25. 25

    bashは、ファイル内の複数行のテキストをパターンに置き換えます

  26. 26

    パターンを検索し、ファイル内の値を置き換えます

  27. 27

    ファイル内の解析されたパラメータ値に基づいて、ファイルの内容を他のファイルに分割する

  28. 28

    ファイルマッチングパターン内の行を検索し、置換します

  29. 29

    ファイル内の1つのパラメータのみを変更する方法

ホットタグ

アーカイブ