Powershellの.ps1スクリプトでコマンドライン引数を.txtファイルに分離してiniファイルみたいな事をさせたい。
スクリプト
<#
.SYNOPSIS
コマンドライン引数をtxtファイルで渡す
#>
using namespace System.IO
param(
[string]$Path
)
Set-StrictMode -Version Latest
$ErrorActionPreference = "STOP"
function usage()
{
Write-Host ("{0}の使い方" -f (Split-Path -Leaf $PSCommandPath))
exit
}
# 引数があるか?
if ($Path -eq "")
{
$fileName = ([Path]::GetFileNameWithoutExtension($PSCommandPath) + ".txt")
$txtPath = Join-Path $PSScriptRoot $fileName
if (Test-Path -LiteralPath $txtPath)
{
Get-Content -LiteralPath $txtPath | Invoke-Expression
} else {
usage
}
}
Write-Host ("引数のPathは{0}" -f $Path)
テキストファイル
$Path = "hoge"
スクリプトと同じディレクトリにスクリプト名+拡張子を.txtで保存
結果
# 引数無し(txt無し)
PS>.\argv_ini.ps1
argv_ini.ps1の使い方
# 引数無し(txt有り)
PS>.\argv_ini.ps1
引数のPathはhoge
# 引数有り
PS>.\argv_ini.ps1 a
引数のPathはa
説明
.txtファイルの中身はpowershellの文法で記述してください。
コメント