PowerShll on OSX 10.11 のインストール

先日、PowerShell on Linux を Ubuntu 16.4 にインストールする方法について記載したのですが、自宅のOSXの環境にもどうしてもインストールしてみたくなり、やってみたのでインストール方法について説明しておきます。

あまりにも簡単なので、特にはまることもありませんが、PowerShell がOSXで使えるということはOSのAutomaterでPowerShellを実行することも出来るようになるよということでもあります。

前提環境の確認

左上のりんごマーククリック→About This Mac で表示されます。

About_This_Mac

対象バージョンは、10.11 以降になります。

パッケージのダウンロード

GitHub のサイトからパッケージをダウンロードします。

GitHub_-_PowerShell_PowerShell__PowerShell_for_every_system_

※デフォルトでは、/Users/ユーザー名/Downloads にダウンロードされます。

 

Terminalを使ってのインストール

Terminalを起動してコマンドラインを実行します。sudo パスワードを忘れずに。

Last login: Sat Aug 27 12:12:05 on ttys000

Mihos-MacBook-Air:~ Miho$ cd Downloads/

Mihos-MacBook-Air:Downloads Miho$ sudo installer -pkg powershell-6.0.0-alpha.9.pkg -target /

Password:

installer: Package name is powershell-6.0.0-alpha.9

installer: Installing at base path /

installer: The install was successful.

起動確認とHello PowerShell

こちらも、PowerShell on Linux と同様に動作します。

Mihos-MacBook-Air:Downloads Miho$ powershell

PowerShell 

Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /Users/Miho/Downloads> $PSVersionTable                                       

Name                           Value                                           

----                           -----                                           

PSVersion                      6.0.0-alpha                                     

PSEdition                      Core                                            

PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                         

BuildVersion                   3.0.0.0                                         

GitCommitId                    v6.0.0-alpha.9                                  

CLRVersion                                                                     

WSManStackVersion              3.0                                             

PSRemotingProtocolVersion      2.3                                             

SerializationVersion           1.1.0.1                                         

PS /Users/Miho/Downloads> Write-Host "Hello PowerShell!!" -ForegroundColor Cyan 

Hello PowerShell!!

PS /Users/Miho/Downloads> Write-Host "Hello PowerShell!!" -ForegroundColor Magenta                                                                              

Hello PowerShell!!

PS /Users/Miho/Downloads> ifconfig                                              

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

 options=3<RXCSUM,TXCSUM>

 inet6 ::1 prefixlen 128 

 inet 127.0.0.1 netmask 0xff000000 

 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 

 nd6 options=1<PERFORMNUD>
(後半省略)

参考リンク

PowerShell is open sourced and is available on Linux

https://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/

 

Package installation instructions

https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md#macos-1011

 

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

広告

PowerShell on Linux (Ubuntu16.4) のインストール方法

先日、PowerShell がオープンソース化され、Linux や OSX でも利用可能になりました。ただ、使えるようになったということではなく、その先には、 Microsoft loves Linux のきちんとしたビジョンとメッセージがあるのですが、詳細はリンク先をご覧いただくとして、SQL Server on Linux のアナウンス(製品はまだプライベートベータですので、内容については今日現在は言及できませんが、SQL Server 2016 の機能エンハンスから期待してもいいと思います。)、マルチプラットフォームでオープンソースな.NET Core やWSLとしてBash がWindows 10 に加わり、オープンソースソフトウェアの開発のためのプラットフォームを整備してきました。将来的には Microsoft Operations Management Suite (OMS)への機能拡張も視野にはいっています。個人的には、PowerShell のDesired State Configuration (DSC) で扱える範囲がさらに広がることによってマルチプラットフォームでのインフラストラクチャの運用管理がさらに自動化・効率化され、DevOpsに代表される作って捨てて、作って捨ててっていうインフラのライフサイクルをさらに加速するのではないかと期待しています。

さて、そんなオープンソースになったPowerShellですが、手元にUbuntu 16.04 (64-bit) の環境があったので、実際にどのようにインストールするのかを実施してみましたので手順について書いてみます。

 

PowerShell on Linux のインストール

※ちょっと不親切だなーと思ったので、自分で打つコマンドは緑で色分けしています。

前提環境:

Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64)

* Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Get cloud support with Ubuntu Advantage Cloud Guest:
 http://www.ubuntu.com/business/services/cloud

14 packages can be updated.
 0 updates are security updates.
 Last login: Sat Aug 20 01:43:00 2016 from 157.65.54.111

作業用フォルダの作成、移動

miyamam@SQLinux:~$ pwd 
 /home/miyamam
 miyamam@SQLinux:~$ mkdir temp
 miyamam@SQLinux:~$ cd temp/

wget コマンドでインストールバイナリをダウンロードする。

 miyamam@SQLinux:~/temp$ wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb
 --2016-08-20 01:44:41--  https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb
 Resolving github.com (github.com)... 192.30.253.112
 Connecting to github.com (github.com)|192.30.253.112|:443... connected.
 HTTP request sent, awaiting response... 302 Found
 Location: https://github-cloud.s3.amazonaws.com/releases/49609581/3ab34990-63bf-11e6-84b3-9c3f34c3318d.deb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20160820%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20160820T014442Z&X-Amz-Expires=300&X-Amz-Signature=9eee30f12bd1767fe0200f43acac93214a70e7aaa7835e97abc4eb393487be6d&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dpowershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb&response-content-type=application%2Foctet-stream [following]
 --2016-08-20 01:44:42--  https://github-cloud.s3.amazonaws.com/releases/49609581/3ab34990-63bf-11e6-84b3-9c3f34c3318d.deb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20160820%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20160820T014442Z&X-Amz-Expires=300&X-Amz-Signature=9eee30f12bd1767fe0200f43acac93214a70e7aaa7835e97abc4eb393487be6d&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dpowershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb&response-content-type=application%2Foctet-stream
 Resolving github-cloud.s3.amazonaws.com (github-cloud.s3.amazonaws.com)... 54.231.72.219
 Connecting to github-cloud.s3.amazonaws.com (github-cloud.s3.amazonaws.com)|54.231.72.219|:443... connected.
 HTTP request sent, awaiting response... 200 OK
 Length: 40928824 (39M) [application/octet-stream]
 Saving to: ‘powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb’

powershell_6.0.0-alpha.9-1ubu 100%[=================================================>]  39.03M  12.1MB/s    in 4.3s

2016-08-20 01:44:48 (9.03 MB/s) - ‘powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb’ saved [40928824/40928824]


#wget する先のリンクは都度新しいものがリリースされている可能性がありますので、GitHubで確認をして環境に合わせます

2016-08-20_11h39_05

 

インストール

miyamam@SQLinux:~/temp$ sudo apt-get install libunwind8 libicu55
Reading package lists... Done
Building dependency tree
Reading state information... Done
libicu55 is already the newest version (55.1-7).
libunwind8 is already the newest version (1.1-4.1).
0 upgraded, 0 newly installed, 0 to remove and 18 not upgraded.
miyamam@SQLinux:~/temp$ sudo dpkg -i powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb
Selecting previously unselected package powershell.
(Reading database ... 99535 files and directories currently installed.)
Preparing to unpack powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb ...
Unpacking powershell (6.0.0-alpha.9-1) ...
Setting up powershell (6.0.0-alpha.9-1) ...
Processing triggers for man-db (2.7.5-1) ...

 

起動確認とHello PowerShell

miyamam@SQLinux:~/temp$ powershell
 PowerShell
 Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /home/miyamam/temp> $PSVersionTable
 Name                           Value
 ----                           -----
 PSVersion                      6.0.0-alpha
 PSEdition                      Core
 PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
 BuildVersion                   3.0.0.0
 GitCommitId                    v6.0.0-alpha.9
 CLRVersion
 WSManStackVersion              3.0
 PSRemotingProtocolVersion      2.3
 SerializationVersion           1.1.0.1

 

PowerShellの典型的なサンプルのWrite-Host コマンドレットを使用します。(-ForegroundColor オプションは指定色にするというオプションです。)

 

PS /home/miyamam/temp> Write-Host "Hello PowerShell!!" -ForegroundColor Cyan
 Hello PowerShell!!
 PS /home/miyamam/temp> Write-Host "Hello PowerShell!!" -ForegroundColor Magenta
 Hello PowerShell!!

2016-08-20_11h46_14

 

インタラクティブシェルの動作確認として、Windows の PowerShell 環境ではエラーになる ifconfig ですが…

2016-08-20_11h52_42

ちゃんと動作します。

2016-08-20_11h52_56

終了させる場合はexit コマンドで終了させます。

 

参考リンク

PowerShell is open sourced and is available on Linux

https://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/

 

Package installation instructions

https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md

 

 

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

PowerShell でイベントログを出してみた

フォーラムでご質問があったので、勉強がてらPowerShellで確認してみました。前職時代も技術情報を修得するために、フォーラムでのご質問を調べたり試したりしていたのですが、勉強になるのでおすすめです。

フォーラムでご質問をされる場合にはこちらをご一読いただけますようお願いいたします。

PowerShellでイベントログを扱うためのコマンドレットは下記のものがあります。

Clear-EventLog
Get-EventLog
Limit-EventLog
New-EventLog
Remove-EventLog
Show-EventLog
Write-EventLog

イベントログを出すだけであれば、New-EventLogで定義してからWrite-EventLogで書き出すことで実現できます。

PS C:WINDOWSsystem32>  New-EventLog -LogName Application -Source mihochannel

PS C:WINDOWSsystem32> Write-EventLog -LogName Application -EntryType Error -Source mihochannel -EventId 1 -Message “Hello Event log :)”

image

 

実行結果はこちらになります。

アプリケーションログに、”Hello Event log : )”と出力されるのが確認できます。

image

 

動作確認した環境はWindows 10のPowerShell5です。

image

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

PowerShellでSSHを利用してみた

PowerShell 好きですか?

私はWindows生活3か月未満ですが、すでに虜です。(言い過ぎ)

OSX生活をしていた5年間、VDI環境を引っ張り出してまでPowerShellでやっていたことといったら、PowerCLIのコマンドレットを使ったり使わなかったり程度だったので、今のPowerShellはかなり機能強化されていて、知れば知るほどその深さに驚いています。

さておき。

PowerShell、便利なんですけど SSH が直接操作できないんですよね。

こちらのブログにあるように、今後Windows 10ではコマンドプロンプトでUbuntuのBashが叩けるようになるので、SSHをPowerShellで操作しようとすること自体ナンセンスになるのかもしれませんが、私の手元の物理・仮想マシンには今のところ最新のInsider preview が落ちてきていないので、しばらくの間はPowerShellで操作することになるでしょう。

 

そんな、インフラエンジニアでも気軽に使えてしかも無料という最高な武器であるPowerShellのコマンドレット拡張のモジュールがGitHubで公開されているのをご存知でしょうか?(私は知りませんでした。)

今日はそのなかのひとつ、OpenSSHをPowerShellに追加するモジュールを使ってみました。

 

1. GitHub から環境にあわせたモジュールをダウンロードします。(Wikiによると64-bit はCygwinが必要らしいので32-bitにしました。)

image

 

2.ダウンロードしたZipファイルを解凍し、”C:Program FilesOpenSSH-Win32”に置きます。

 

3.PowerShell を管理者モードで起動します。(検索窓でPowerShell を探して、Ctrl + Shift + Enterで管理者モードになります。)

imagePS C:ToolsOpenSSH-Win64> cd ‘C:Program FilesOpenSSH-Win32’


#SSHのホストキーを生成します(公開鍵認証方式で接続する場合のみ)

PS C:Program FilesOpenSSH-Win32> .ssh-keygen.exe -A
C:Program FilesOpenSSH-Win32ssh-keygen.exe: generating new host keys: RSA DSA ECDSA ED25519

#Windows Firewall を設定します。

PS C:Program FilesOpenSSH-Win32> New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
Name                  : {d4ad1913-e75e-4474-aa83-0fc94c25669a}
 DisplayName           : SSH
 Description           :
 DisplayGroup          :
 Group                 :
 Enabled               : True
 Profile               : Any
 Platform              : {}
 Direction             : Inbound
 Action                : Allow
 EdgeTraversalPolicy   : Block
 LooseSourceMapping    : False
 LocalOnlyMapping      : False
 Owner                 :
 PrimaryStatus         : OK
 Status                : 規則は、ストアから正常に解析されました。 (65536)
 EnforcementStatus     : NotApplicable
 PolicyStoreSource     : PersistentStore
 PolicyStoreSourceType : Local

image

#一時的にPowerShellの実行ポリシーをゆるめて

PS C:Program FilesOpenSSH-Win32> Set-ExecutionPolicy Unrestricted

#インストール用のスクリプトを実行します。

PS C:Program FilesOpenSSH-Win32> .install-sshlsa.ps1
PS C:Program FilesOpenSSH-Win32> .install-sshd.ps1
 sshd successfully installed

#一時的にPowerShellの実行ポリシーを戻します。

PS C:Program FilesOpenSSH-Win32> Set-ExecutionPolicy RemoteSigned

 

4.そのままでは動かないこともあったので、とどめに環境変数を設定します。

# 永続的にパスを追加する(Windows環境変数を書き換える)
 $Env:Path += ";C:Program FilesOpenSSH-Win32"
 [Environment]::SetEnvironmentVariable('PATH', $Env:Path, 'Machine')

5.テストOSXにSSHサーバーを立てて接続テストを行ってみました。

>ssh ユーザー名@接続先ホストのIPアドレス

初めて接続するサーバーの場合確認を求められるので、Yesと入力します。

その後パスワードを入力。

下記の例ではdir コマンドと ls コマンドを実行してローカルかどうかを確認しています。

image

 

参考リンクhttps://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

Build のダウンロードコンテンツをPowerShellでリネームしてみた。

今年もBuildのコンテンツがChannel 9にて公開されました

セッションのビデオやパワーポイントの資料もそのまま公開されているので、通勤時間や空き時間に勉強するのに最適なコンテンツになっています。

さすがに、全部に目を通したりするのはつらいのですが…

さて、サイトをご覧いただければわかるかと思いますが、ダウンロードコンテンツには法則性がありました。

 

◆ビデオの場合◆

セッションID_mid.mp4

セッションID_LG.mp4

セッションID_mobile.mp4

 

◆パワーポイントの場合◆

セッションID.pptx

 

ダウンローダーをつくるのには、「すべて」タブを選択して現れるリンクの中からこれらのファイルをダウンロードするものをつくればいいということになります。

ダウンローダーは先輩テクニカルエバンジェリストの荒井省三さんが作成してくれたDownloaderので割愛します。荒井さん、ありがとうございます!(でも、公開許諾をまだとってないので、今日現在はツールのありかは秘密です。)

ダウンローダーがあってコンテンツをチェックするのがかなり便利だなぁって喜んだのは束の間。前述のコンテンツの法則性から「何のセッションだかわからない」のでフォルダがカオスになってしまったのです。

Windows PowerShell ISE をつかってデバッグしながら書いたので、汚い感じでさらに「動けばいいや」ぐらいのロジックしか考えていません。

適当ですみません(´・ω・`)

タイトル属性が入っていないものはリネームできないのでそのままです。

image

作成したものはこちらにありますのでご自由に改変してご利用ください。GitHubなので、もっといいソースに変えてくれてもOKです。

 

Visual Studioからやり方がわからなくて、うまくPushできなかったので力技でアップロードしちゃいました。

まずは、この単純なスクリプトがだれかの役にたちますように祈っておきます。

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

PowerShellでSSHをサポートするらしい

MSDNブログに書いてありました。端的に言うとPower Shell v3?(現行バージョンがわからないのですが…)でSSHをサポートするそうです。

ということは、余分なツールを入れなくても作業端末からESXCLIとかシームレスにたたけるようになるらしいです。

 

参考資料:

Looking Forward: Microsoft: Support for Secure Shell (SSH)