FFFTPの接続設定をGUIで大量に作成するは面倒なので、FFFTPのiniファイルを直接編集するPowerShell関数を作成します。この関数は、指定したセクションとキーの値を取得および設定するために使用されます。
まず、プロジェクトフォルダの構成を示します。
📂FFFTPConfigEditor
┣ 📂Modules
┃ ┗ 📜FFFTPConfigHandler.psm1
┣ 📂Tests
┃ ┗ 📜FFFTPConfigTests.ps1
┣ 📜App.ps1
┗ 📜App-ショートカット
次に、各ファイルのアウトラインを示します。
# App.ps1
# アプリケーションのメインエントリポイント
Import-Module "$PSScriptRoot\\\\Modules\\\\FFFTPConfigHandler.psm1"
# テストスクリプトの実行
. "$PSScriptRoot\\\\Tests\\\\FFFTPConfigTests.ps1"
# メインスクリプトのロジックをここに記述
# FFFTPConfigHandler.psm1
# セクションとキーの値を取得する関数
function Get-INIValue {
param (
[string]$filePath,
[string]$section,
[string]$key
)
# ファイルが存在するか確認
if (-Not (Test-Path $filePath)) {
throw "ファイルが見つかりません: $filePath"
}
# iniファイルの内容を読み込む
$content = Get-Content $filePath
# セクションの開始位置を探す
$sectionIndex = $content.IndexOf("[$section]")
if ($sectionIndex -eq -1) {
throw "セクションが見つかりません: $section"
}
# セクション内のキーの行を探す
for ($i = $sectionIndex + 1; $i -lt $content.Length; $i++) {
if ($content[$i] -match "^\\\\[$") {
break
}
if ($content[$i] -match "^$key\\\\s*=") {
return $content[$i].Split('=')[1].Trim()
}
}
throw "キーが見つかりません: $key"
}
# セクションとキーの値を設定する関数
function Set-INIValue {
param (
[string]$filePath,
[string]$section,
[string]$key,
[string]$value
)
# ファイルが存在するか確認
if (-Not (Test-Path $filePath)) {
throw "ファイルが見つかりません: $filePath"
}
# iniファイルの内容を読み込む
$content = Get-Content $filePath
$sectionIndex = $content.IndexOf("[$section]")
if ($sectionIndex -eq -1) {
# セクションが存在しない場合、新しく追加
$content += "[$section]"
$content += "$key=$value"
Set-Content $filePath -Value $content
return
}
# セクション内のキーの行を探して更新
for ($i = $sectionIndex + 1; $i -lt $content.Length; $i++) {
if ($content[$i] -match "^\\\\[$") {
break
}
if ($content[$i] -match "^$key\\\\s*=") {
$content[$i] = "$key=$value"
Set-Content $filePath -Value $content
return
}
}
# キーが見つからなかった場合、新しく追加
$content.Insert($sectionIndex + 1, "$key=$value")
Set-Content $filePath -Value $content
}
# FFFTPConfigTests.ps1
# テスト用のiniファイルパスを指定
$testIniFilePath = "$PSScriptRoot\\\\test_ffftp.ini"
# テスト: 値の取得
try {
$value = Get-INIValue -filePath $testIniFilePath -section "Settings" -key "Port"
Write-Output "Port: $value"
} catch {
Write-Error $_
}
# テスト: 値の設定
try {
Set-INIValue -filePath $testIniFilePath -section "Settings" -key "Port" -value "21"
Write-Output "Port set to 21"
} catch {
Write-Error $_
}
これで、FFFTPのiniファイルを直接編集する関数を作成しました。この構成を基にプロジェクトを進めてください。