WindowsでFTPを使うバッチを作る際にWinSCPを使うことが多かったのですが、WinSCPに依存しないようにしたくなったので、PowerShellでモジュールを作成しました。
作成の背景
もともと、ツールにFTP転送機能を実装する際は、機能が豊富で信頼性の高い「WinSCP」のライブラリ(WinSCP .NET Assemblyなど)を愛用していました。非常に便利で重宝していたのですが、環境ごとのバージョンの統一やバージョンアップに伴う仕様変更への懸念など「外部アプリを用いることの懸念」がありました。
そこで、「外部アプリのライブラリに依存している限り、この呪縛からは抜け出せない」と考え、設計を大きく変更。OSSとPowerShellを用いた実装へと舵を切ることにしました。
PsFtpTool の特徴
広告
Windows標準機能+OSSで動く
Windowsの任意フォルダに配置するだけで利用できます。
- PowerShell 向けの ポータブル FTP ツール(フォルダコピーで配布、インストール不要)
- Windows PowerShell 5.x 推奨、PowerShell 7.x でも動作
- 関連するDDLも同梱。追加インストールは不要。
別アプリに依存しない仕様に変更
モジュール化することで 運用依存と 製品依存を大きく解消します。
- 外部アプリのインストール・更新が不要
- 外部 exe / COM 呼び出しに伴うパス・権限・実行ポリシーの問題の解消
- 製品側の仕様変更でスクリプトや自動化が壊れる懸念の解消
- 責任分界を明確化
広告
柔軟な運用を実現
設定ファイルとコマンドファイルの変更のみで対応できます。
- 直すのは主に config + commands だけ(スクリプト本体は触らない)
- config(JSON) で接続先・ジョブ登録、commands(.ftp 等) で処理を定義
- 複数のプロトコルに対応:FTP、FTPS、SFTP(パスワード・鍵認証)
cd/get/put/move/rm/lsとワイルドカードに対応- ファイル0件の後続処理を制御
scripts配列で複数コマンドファイルを順実行- 終了コードをで制御 :0=正常 / 1=0件 / -1=エラー
- ログフォルダは 相対・絶対パスに対応
- ログファイル名パターンの設定可能: 固定 / 日次 / 実行ごと(
none/day/daytime)
PsFtpTool の取得先
Githubで公開しています。