あらすじ
湯婆婆シリーズが流行っているらしいです。
「Javaで湯婆婆を実装してみる」が元ネタです。
Powershellのものが無いようですね。便乗してみましょう。
***だれにでもインストールできる湯婆婆***です。
※この記事を参考にすると、あなたの編み出した呪文を世界中に広めることが出来るかもしれません。
※湯婆婆とは千と千尋の神隠しに登場する魔女です。
#%E6%B9%AF%E5%A9%86%E5%A9%86%E3%81%A8%E3%81%9D%E3%81%AE%E9%96%A2%E4%BF%82%E8%80%85)とは千と千尋の神隠しに登場する魔女です。
湯婆婆のインストール
Powershell上に下記1行をコピペして実行します。
これであなたのコンソールにも湯婆婆がやってきます。
楽しみですね!!
Install-Module -Name psyubaba
インストールしようとすると、以下のように聞かれます。
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):
- 「湯婆婆なんて恐ろしくて信頼できない」という慎重な人は、「L」を入力して終了してください。
- 「どんな奴なのか湯婆婆を試してやろうじゃないか!」という度胸のある人は「A」を入力してください。
- 「気になるけど湯婆婆はキープで!」という優柔不断なあなたは、「S」を入力してください。
※あなたのPCがインターネットに接続してないと窮屈すぎて湯婆婆が入ってくれません。
※PSGalleryはMicrosoftが運営するサイトですが、
湯婆婆が起こす問題に関してMicrosoftが責任を取ることは出来かねると思われます。
湯婆婆の取り扱いには充分ご注意ください。
湯婆婆の起動
インストールしたら、この呪文で湯婆婆を起動します。
Start-Yubaba
古い湯婆婆をインストール
0.0.1
の部分は好きな湯婆婆のバージョンを指定してください。
Install-Module -Name psyubaba -RequiredVersion 0.0.1
湯婆婆の更新
もし、古い湯婆婆をインストールした後に、
最新の湯婆婆を使いたくなったら、この呪文を唱えてください。
Install-Module -Name psyubaba -Force
古い湯婆婆は消滅し、最新の湯婆婆が手に入ります。
湯婆婆の排除
もし、湯婆婆が必要なくなったら、
この呪文を唱えてください。
Uninstall-Module -Name psyubaba
湯婆婆の中身
psm1ファイルが湯婆婆の本体です。
ここに湯婆婆の脳内構造が記録されています。
function Start-Yubaba {
Write-Host("契約書だよ。そこに名前を書きな。")
$keiyakusho=Read-Host
$name=$keiyakusho
Write-Host("フン。"+$name +"というのかい。贅沢な名だねぇ。")
$newNameIndex = Get-Random(($name).Length)
$newName = $name.Substring($newNameIndex, 1)
Write-Host("今からお前の名前は"+$newName+"だ。いいかい、"+$newName+"だよ。分かったら返事をするんだ、"+$newName+"!!")
}
psd1ファイルには湯婆婆のメタ情報が記録されています。
湯婆婆のステータスとでも言うべきでしょうか。
#
#
#
#
#
#
#
@{
ModuleVersion = '0.0.2'
GUID = '5e3c7502-ecaa-4fcd-b8b4-7962d81821ba'
Author = 'shortarrow'
CompanyName = 'shortarrow'
Copyright = '(c) shortarrow. All rights reserved.'
Description = 'yubaba'
NestedModules = @('psyubaba.psm1')
FunctionsToExport = @('Start-Yubaba')
VariablesToExport = '*'
PrivateData = @{
PSData = @{
Tags = @('yubaba','湯婆婆','🍄','ghibli')
LicenseUri = 'https://github.com/ShortArrow/PSYubaba'
ProjectUri = 'https://github.com/ShortArrow/PSYubaba'
} # End of PSData hashtable
} # End of PSData hashtable
}
※湯婆婆の中身をまじまじと眺めたい人は、下記の呪文をPowershell上で唱えてください。
$env:PSModulePath
これで、最初に出てくる場所に湯婆婆が格納されています。
吉田さん問題
湯婆婆は、吉田さんに対しては強いですが、
契約書だよ。そこに名前を書きな。
吉田
フン。吉田というのかい。贅沢な名だねぇ。
今からお前の名前は吉だ。いいかい、吉だよ。分かったら返事をするんだ、吉!!
𠮷田さんに弱いらしいです。
もうタジタジ・・・。
契約書だよ。そこに名前を書きな。
��田
フン。��というのかい。贅沢な名だねぇ。
今からお前の名前は��。いいかい、��よ。分かったら返事をするんだ、、�!�!!
湯婆婆がクラッシュする
契約書にサインしないと湯婆婆は激オコです。
契約書だよ。そこに名前を書きな。
フン。というのかい。贅沢な名だねぇ。
Get-Random: C:\Users\take\Documents\PowerShell\Modules\psyubaba\0.0.2\psyubaba.psm1:10
Line |
10 | $newNameIndex = Get-Random(($name).Length)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
| The Minimum value (0) cannot be greater than or equal to the Maximum value (0).
MethodInvocationException: C:\Users\take\Documents\PowerShell\Modules\psyubaba\0.0.2\psyubaba.psm1:11
Line |
11 | $newName = $name.Substring($newNameIndex, 1)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception calling "Substring" with "2" argument(s): "Index and length must refer to a location within
| the string. (Parameter 'length')"
今からお前の名前はだ。いいかい、だよ。分かったら返事をするんだ、!!
※おそらく「おばあちゃんダメここにはお父さんもお母さんもいないもん。」と言うと許してくれます。
湯婆婆の開発にあたり参考にした情報
- PSSushiBar🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣
- はじめてのPowerShellモジュール公開
- 🍣が流れる記事が流行ったことがあります
- 懐かしいですね
- PowerShell のモジュール詳解とモジュールへのコマンドレット配置手法を考える
#Windows-PowerShell-Module-Concepts)
.Net Core SDK
「.Net Core SDK」をインストールしていないと、以下のようなエラーメッセージが出ました。
Failed to generate the compressed file for module '/usr/local/bin/dotnet failed to pack: error
「Dotnet failed to pack' error when trying to publish a powershell module to local repository」によれば、dotnet sdk が必要とのこと。
開発環境のWindows表示言語
Windows OS のユーザーインターフェースの設定が日本語表示になっていると
@PublishPSArtifactUtility_Param Failed to generate the compressed file for module 'Cannot index into a null array.'.
みたいなエラーメッセージが出てアップロードできませんでした。
Failed to generate the compressed file for module 'Cannot index into a null array'.によれば、WindowsのUIの表示言語を変更すればよいとのことでした。
実際にやってみたのが下記画像です。この直後にPCを再起動したらアップロードできました。
湯婆婆スマッシュ?
現在、PSGalleryの上部には下記のような表示があります。
We are working on fixing the broken package statistics page
日本語訳:壊れたパッケージの統計ページの修正に取り組んでいます。
もしかすると、私が湯婆婆を召喚する呪文をアップロードしてしまったからでしょうか?
PSGallery内で湯婆婆スマッシュが炸裂したのかもしれませんね。
※ちなみに類義語としてラルフスマッシュやハルクスマッシュがあるらしいです。
ぜひ参考にしてみてください。
やって良かったこと
- 湯婆婆のありがたみを知ることが出来た
- モジュールを公開する手順を理解できた
モジュール公開を試すモチベーションが無かったのですが、
湯婆婆のおかげで重い腰を上げることが出来ました。
今後はもっと便利なモジュールを公開してOSS貢献しようと思います。
難しい単語を使うと、
「ゲーミフィケーションした」というらしいです。
@Nemesis さんに感謝です。
開発環境
- Windows 10
- Powershell 7
Excelsior!