9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Web上にスクリプトを置いて、PowerShellで実行可能にしてみた(その1/Hello,World編)

Posted at

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には、以下のようなスクリプトが書かれています。

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サーバーに落ち着きました。

#参考
Chocolatey Gallery

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?