Web上にスクリプトを置いて、PowerShellで実行可能にしてみました。
今回は初回ということで、まずは簡単なスクリプトを作ってみました。
今後、本格的なスクリプトにも挑戦できればと思います。
#使用例
#PowerShellを起動し、以下コマンドを実行して下さい
function Invoke-RemoteScript($url){
$script = (New-Object Net.WebClient).DownloadString($url)
Invoke-Expression("&{$script} $args")
}
Invoke-RemoteScript 'http://nancus.html.xdomain.jp/scripts/hello.ps1' '[name]'
#こんにちは、[name]!
ちなみに、hello.ps1には、以下のようなスクリプトが書かれています。
param($name)
echo "こんにちは、$name!"
#経緯
chocolateyの真似をしたくなったのがきっかけです。
chocolateyっていうのは、Windowsへのソフトウェアのインストールをコマンド1発で実行できる便利ツールで、chocolatey自体のインストールも、PowerShellで以下のコマンドを実行すればOK。
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
何でそんなに簡単にインストールできるんやろ?と疑問に思って、そのコマンドを調べてみると、
1.WEB上から、インストール用のスクリプトをダウンロードして(DownloadString)
2.PowerShell上で実行(iex。iexはInvoke-Expressionのエイリアス)する
という、とても分かりやすい仕組みでした。
これを真似すれば、
WEB上にスクリプトをアップロードし、Windows端末から、URLを指定してスクリプトを即実行、ということができるのでは、と思い、真似してみることにしました。
はじめはGoogleドライブにスクリプトをアップロードして、URLを発行して使用しようとしたのですが、発行したURLに対してDownloadStringすると、なんだか余計なタグが色々ついてきて・・・
多分、人間が使いやすくするために、色々とソースを変換してくれているのでしょうが、そのままではPowerShellで実行できないので、Googleドライブは諦めました。
次に無料ホスティングサービスを検討しましたが、tok2は広告などの色々なタグが付いてくるので、やはりそのままPowerShellでは実行できませんでした。
最終的に、FTPでアップロードしたテキストをそのまま表示できる、XdomainのHTMLサーバーに落ち着きました。