- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PowerShellでの外部ファイルからの変数読み)
PowerShellでの外部ファイルからの変数読み
このQ&Aのポイント
- PowerShellを使用して外部ファイルから変数を読み込む方法を探しています。具体的には、read.iniファイルに変数が書かれており、ps1ファイルでそれを読み込んで変数として使用したいです。
- 外部ファイルから変数を読み込むためには、read.iniファイルのような形式が望ましいです。例えば、[yomikomi]というセクションにFilePath,C: emp estといった変数の記述をすることができます。ps1ファイルごとに異なるファイルを読み込む必要があるため、初期読み込みのような仕組みでは対応できません。
- PowerShellでは、外部ファイルから変数を読み込むためにGet-Contentコマンドを使うことができます。具体的な実装方法やファイルの形式にはいくつかの選択肢がありますが、read.iniファイルのような形式が理想です。また、読み込んだ変数は$変数名=値という形式で使用することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
丁度同じような話が出ました。 http://okwave.jp/qa/q6899282.html ポイントの部分だけ抜き出したものを載せておきます。 不要行の読み飛ばしや配列利用は、適宜応用してみて下さい。 *** 以下の2ファイルを同ディレクトリに配置し、script.ps1を実行する *** *** script.ps1 *** Get-Content .\read.ini | Foreach-Object { $name, $value = $_.split(',', 2) Invoke-Expression "`$$name='$value'" } echo $FilePath $MODRI $Message *** read.ini *** FilePath,C:\temp\test MODRI,3 Message,"エラーが起きました"
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
回答No.1
お礼
回答ありがとうございます。 推奨いただきましたXML形式についてはXMLを勉強しつつ取り入れていきたいと思います。 それともう一つのGet-Content形式ですが、これは読み込んだ後どのように変数化すればいいでしょうか? 今はiniファイルの中身を [Sting]$test0="message001" [Sting]$test2="message002" [Sting]$test3="message003" みたいな形にして、います。 前に以下のような形で適用できないか試しましたが・・・ $reader = New-Object System.IO.StreamReader($Logfile,[Text.Encoding]::GetEncoding("Shift_Jis")) while (($line = $reader.ReadLine()) -ne $null){ # 抜き出し処理 $check1=$line -split "," if($rx.IsMatch($line)){ # "先頭が#の場合Skip" }elseif($line -eq ""){ # "文字が含まれていない場合Skip" }elseif($line.trim() -eq "" ){ # "全空白を削除した結果Nullの場合Skip" }else{ if($check1[1] -ne ""){ $check1[0]=$check1[1] →ここにで読み込んだものを変数格納する形がわからない } } } ご教授ください。