この記事はPowerShell Advent Calendar 2013の20日目の記事です!

▼ PSAC2013.ps1
function Twinkle-Star {
[CmdletBinding(DefaultParameterSetName="p1")]
param(
[Parameter(Position=1,Mandatory=$true,ParameterSetName="p1")]
[string]$Aa,
[Parameter(Position=2,ParameterSetName="p1")]
[int]$Interval=1,
[Parameter(Position=3,ParameterSetName="p1")]
[int]$Twinkle=10,
[Parameter()]
[Alias("V")]
[char]$Value="★"
)
begin {
if ($Host.Name -ne 'ConsoleHost') {
Write-Host -ForegroundColor Red "$($Host.Name) では実行できません><"
$path = &{ $myInvocation.ScriptName}
$param = "-Aa `"`"`"$Aa`"`"`" -Interval $Interval -Twinkle $Twinkle -Value $Value"
Start-Process powershell -ArgumentList "Import-Module $path; Twinkle-Star $param; Read-Host"
exit -1
}
Clear-Host
}
process {
#▼ $Value(★)の位置を取得
$Aa.ToCharArray() |
ForEach-Object -Begin {$obj = @()} -Process {
Write-Host -NoNewline $_
if ($_ -eq $Value) {
$x = $Host.UI.RawUI.CursorPosition.X-2
$y = $Host.UI.RawUI.CursorPosition.Y
$obj += [pscustomobject]@{x=$x; y=$y}
} elseif ($_ -eq "☆") {
Write-Host -NoNewline `b`b$_ -ForegroundColor Yellow #☆の色
}
}
#▼ カーソルの移動
function Move-Cursor([int]$x, [int]$y) {
$coordinate = New-Object System.Management.Automation.Host.Coordinates($x, $y)
$Host.UI.RawUI.CursorPosition = $coordinate
}
#▼ $Value(★)の色を変更
function Change-Color() {
$obj |
ForEach-Object {
$random = $(Get-Random -Minimum 0 -Maximum 15)
$color = [ConsoleColor]::GetNames([System.ConsoleColor])[$random]
Move-Cursor $_.x $_.y
Write-Host -NoNewline $Value -ForegroundColor $color
}
Move-Cursor 0 19
Start-Sleep $interval
}
#▼ $Twinkle(10)回キラキラ><
1..$Twinkle | ForEach-Object { Change-Color }
}
end {
Write-Host "`t`tMerry Chirstmas!!`t`t`n" -ForegroundColor Red -BackgroundColor DarkGreen
Start-Sleep 5
}
}
<#
#▼ コマンド構文
Twinkle-Star [-Aa] [[-Interval] [-Twinkle] ] [-Value ]
#▼ パラメータ
-Aa:アスキーアート。
-Interval:キラキラの間隔秒数。デフォルト1秒。
-Twinkle:キラキラする回数。デフォルト10回。
-Value:キラキラする文字。デフォルト★。
#>
▼ powershell.exe
Import-Module .\PSAC2013.ps1 -Force $christmasTree = @" `t + ・ + ゚。:。゚ + * ・‥☆‥・ + 。゚▲゚。 * + ▲▲ ▲▲★ + * ▲★彡▲ * 十 ★彡▲▲★ 彡▲▲★∴▲ 十 ▲▲★∴▲▲★ ▲★∴▲▲★彡▲ ★∴▲▲★彡▲▲★ ▲▲▲★彡▲▲★∴▲ ┃┃ ■■■■ ■■■ ■■■ `t "@ Twinkle-Star -Aa $christmasTree #-Interval 1 -Twinkle 10 -Value ★
▼ 参考サイト様
- オセロゲームを作ろう(7):盤面描画とカーソル移動(2) – PowerShell Memo
- PowerShell – 空の配列を使用する | ITLAB51.COM
- 拙著「【改訂新版】Windows PowerShell ポケットリファレンス」2/23発売のお知らせ – PowerShell Scripting Weblog<-p.79
- Capture console screen – Windows PowerShell Blog – Site Home – MSDN Blogs
- sabakanse @ ウィキ – 実行しているスクリプトのパスを取得 (PowerShell) – @ウィキモバイル
- GIFアニメ(アニメーション)作成 | 画像加工編集サイト・フリーソフト:無料写真加工ならバナー工房
「もう~いくつ寝ると~♪クリスマス~♪」ですね!
クリスマスは、朝から晩まで大好きなPowerShellタンとイチャイチャしたいと思います><
それはもう1日中イチャイチャです><とっても楽しみです><><><。
ではでは皆様、よいクリスマスを!
ご清覧ありがとうございました!!

コメント