スクリプトモジュールのインストールのサンプルとしてファイルを新規作成するスクリプトを作りました。
指定拡張子の空のファイルを作るスクリプトでしたが、今回は拡張子ごとのテンプレートファイルからファイルを新規作成(テンプレートファイルのコピー)するようにしてみました。
ファイル名:New-File.ps1
PowerShellのモジュール(.psm1)をインストールするスクリプト2
実行中のスクリプトファイルの拡張子を判定することで.ps1と.psm1のハイブリッドスクリプトを作ることが出来ないかと思い試してみました。 <# .SYNOPSIS 拡張子を指定してファイルを新規作成 .DESCRIPTION ファイルを新...
指定拡張子の空のファイルを作るスクリプトでしたが、今回は拡張子ごとのテンプレートファイルからファイルを新規作成(テンプレートファイルのコピー)するようにしてみました。
ファイル名:New-File.ps1
<#
.SYNOPSIS
拡張子を指定してファイルを新規作成
.DESCRIPTION
ファイルを新規作成
.EXAMPLE
New-File [-Extention][txt]
.PARAMETER Extension
作成するファイルの拡張子(ドット(.)は含めない)
.LINK
#>
$ErrorActionPreference = "STOP"
function New-File
{
param(
[Parameter(ValueFromPipeline=$false,Mandatory=$false)]
[string[]]
$Extension = "txt",
[switch]
$Force
)
begin {}
process {
$path = (Join-Path (pwd).Path ("new." + $Extension))
$tempPath = [Environment]::GetFolderPath("MyDocuments")+"\Templates"
if (Test-Path $tempPath) {
$files = ls -LiteralPath $tempPath -Filter ("*."+ $Extension)
if ($files.Count -ne 0) {
$files | select -First 1 | % {
if ($Force) {
cp -LiteralPath $_.FullName -Destination $path -Force
} else {
cp -LiteralPath $_.FullName -Destination $path
}
Get-ChildItem -LiteralPath $path
break
}
}
}
if ($Force) {
New-Item -Path $path -Force
} else {
New-Item -Path $path
}
}
end {}
}
if ([System.IO.Path]::GetExtension($PSCommandPath).ToLower() -eq ".ps1") {
# モジュールのインストール(コピー)
$moduleName = [System.IO.Path]::GetFileNameWithoutExtension($PSCommandPath)
$ps1Path = Join-Path ([Environment]::GetFolderPath('MyDocument')) ("WindowsPowerShell\Modules\" + $moduleName)
if (-not (Test-Path $ps1Path)) { mkdir $ps1Path | Out-Null }
cp -LiteralPath $PSCommandPath -Destination (Join-Path $ps1Path ($moduleName+".psm1")) -Force
} else {
# モジュールの公開
Export-ModuleMember -Function New-File
}
Documentsフォルダ下にTemplatesというサブフォルダを作成しテンプレートファイルを保存してください。
コメント