PowerShellコマンドレットの裏で何が行われているか確認する

備忘としてメモ。 Azure系PowerShellコマンドレットをRESTで実装する際に、コマンドレットで実際にコールされているAPIが分からなかったため調べたところ、VerbosePreferenceとDebugPreferenceをContinueにすることで、実際に裏でやり取りされているHTTPリクエストとレスポンスの内容を確認することができる。

$VerbosePreference = "Continue"
$DebugPreference = "Continue"

下記例はReSet-AzureRoleInstanceコマンドで呼び出されているAPIの内容が出力される。
コンソールに大量の出力があるのであらかじめトランスクリプトを掛けてから実行するとよさそう。

> ReSet-AzureRoleInstance -ServiceName "xxx-app" -Slot "Production" -InstanceName $role -Reboot
デバッグ: 13:40:33 - ResetAzureRoleInstanceCommand begin processing with ParameterSet 'ParameterSetGetDeployment'.
デバッグ: 13:40:33 - using account id 'xxxxx'...
詳細: 13:40:33 - Begin Operation: Reset-AzureRoleInstance
デバッグ: ============================ HTTP REQUEST ============================

HTTP Method:
POST

Absolute Uri:
https://management.core.windows.net/xxx-xxx-xxx-xxx/services/hostedservices/xxx-app/deploymentslots/Production/roleinstances/xxxx_IN_1?comp=reboot

Headers:
x-ms-version                  : 2017-01-01

Body:


デバッグ: ============================ HTTP RESPONSE ============================

Status Code:
Accepted

Headers:
x-ms-servedbyregion           : ussouth3
Strict-Transport-Security     : max-age=31536000; includeSubDomains
x-ms-request-id               : 
Cache-Control                 : no-cache
Date                          : Tue, 25 Jun 2019 04:40:34 GMT
Server                        : 67.3.0.175/release1,(c937119),Microsoft-HTTPAPI/2.0

Body:


デバッグ: ============================ HTTP REQUEST ============================

Pixel 2 XL購入レビュー

使っていたNexus 6Pのバッテリーが数時間しかもたなくなってしまったため、 あれこれと最近のAndroid端末を探していましたが、どうせ10万近く払うにしてもピンとくるものがなく
色々検討した結果ふたたびリファレンス機であるPixel 2 XLを個人輸入することに。

日本国内から入手する方法

Pixel 2 XL 64GB モノクローム(通称パンダ)モデルを購入。
日本のPlayストアからは購入することができないため、転売業者から購入するか(執筆段階で12万円近くする)、販売対象国のIPアドレスを使用してGoogle Playストアから転送業者経由で国内に個人輸入する必要があります。
Playストアは通信元IPアドレスの地域判定をしているため、GCEのUSリージョンに立てたWindows仮想マシンChromeをインストールし、GoogleアカウントでログインしてからPlayストアにアクセスすることで無事ポチることができました。

f:id:non216:20180221005436p:plain

購入時の注意点は転送業者さんが指定している配送先を指定するぐらいです。 なお今回私は以前にもChromebook個人輸入でお世話になったPaypal支払のできるUSAでお買い物.comさんを使用しました。

www.usadeokaimono.com

出荷~受け取りまで

1月25日に注文し、2月4日に受け取れたため、10日かかった形になりました。これは比較的早く受け取れた方かなと思います。
ストアから国内の配送はOnTracという輸送会社が使われていましたが、トラッキングサイトがよく落ちている印象でした。

1月25日 | Playストアで購入
1月26日 | ストアから発送
1月30日 | USAでお買い物.comに到着
1月31日 | USAでお買い物.comから発送

USAでお買い物.comさんからの発送は米国ヤマトを指定しました。

f:id:non216:20180221013712p:plain

転送サービスを含めて掛かった合計料金

本体代金:94,669円 ($894)
USAでお買い物.com手数料:4,568円 ($40.33)
関税:4,400円
小計:103,637円

ざっくり使用感

通信キャリアはもともとemobile時代からのYモバイルを使用していましたが、SIMを刺すだけで全く問題なく使用できています。
パンダモデルの特徴であるオレンジ電源ボタンがアクセントですね。
ソフトウェア的にはPixelランチャーがとても快適です。気づいた細かい点などはまた別エントリで書いていこと思います。

f:id:non216:20180204185621j:plain

急速充電は?

以前使用していたNexus 6Pは付属の急速充電アダプターを毎晩寝るときに使用していたのですが、
どうもこれがバッテリーの劣化を早めたようなので今回のPixel 2 XLでは付属の急速対応USB typeC PDは使用せず1Aの社外品を使用することにしています。
私の使い方だと今のところ満充電から丸2日間使用できる印象ですが、修理やバッテリー交換は容易ではないので劣化状況は今後もウォッチしていこうと思います。

本体ケースはSpigenで購入

f:id:non216:20180221011542j:plain

Pixel 2 XLのアルミユニボディは非常に薄いです。ベゼルレスな液晶と相まって非常によい質感ですが、常用するにはこのパンダボディが結構スベスベしているので絶対にいつか落としそうです。ということでケースを探したのですが、さすがに国内販売していない端末だけあってケースの選択肢が非常に少ないです。

前の端末ではSpigenのケースをとても気に入っていたので今回も選択しました。
ちょっとゴツくなってしまいましたが、落下で画面死亡だけは避けたいので背に腹は変えられず。。。
Spigen本家からの購入です。こちらも到着まで10日ほどかかりました。

f:id:non216:20180215210956j:plain

ケース裏面を見ると、日本語が書かれているのでひょっとしたら日本でも販売する計画があったのかもしれません。

f:id:non216:20180215211713j:plain

AppServiceに自己証明書を登録する場合extended key usageのプロパティが必要

AppServiceのWEBサイトでは標準で *.azurewebsites.netSSLサーバー証明書が使用可能であるため、
独自ドメインを使用したい場合を除いては通常SSLサーバー証明書の登録は必要がないのですが、
CDN利用でオリジン側に特定フィンガープリントの自己証明書を配備したいケースで一点注意点があったため備忘録としてメモ。

具体的にはAppServiceにサーバー証明書用途の自己証明書を配備したい場合、証明書用途をサーバー認証にしておかないと登録に失敗する。

f:id:non216:20180204154658p:plain

Windows Kitの makecert コマンドで作成する場合は -eku の引数を指定して自己証明書をpfx形式で作成することでAppServiceへ登録が可能になる。

makecert -r -pe -a sha256 -n CN="commonname.yoursite" -ss My -sky exchange -len 2048 -e 12/31/2099 -eku 1.3.6.1.5.5.7.3.1 "cert.cer" -sv "cert.pvk"
pvk2pfx -pvk "cert.pvk" -spc "cert.cer" -pfx "cert.pfx" -pi secretkey

Azure認証をバイパスする手順まとめ (PowerShell利用編)

Azureを使ううえでAutomationやFunctionsがいくら便利になっても日々のこまごまとした作業はどうしてもPowerShellワンライナースクリプトからの実行が多くなるため、 Add-AzureAccountLogin-AzureRmAccount で毎回Microsoftアカウント認証が入って難儀するのを回避するにあたっての認証のバイパス手段のまとめ。

ASM系コマンド

ARMじゃないほうのコマンドレット実行、いわゆるクラシックリソースの管理を対象にする場合。
認証情報をカレントユーザーの証明書ストアに保持させておくことで、期限内は操作対象サブスクリプションAdd-AzureAccount の再実行が不要になる。

Get-AzurePublishSettingsFile

をたたくと、取得したいアカウントでの認証後、管理証明書(pubsettings)のダウンロードページに遷移するので管理証明書を取得する。
取得した管理証明書は以下のコマンドで、実行環境のユーザーストアに保存が可能になります。 以下例ではPowerShellから証明書を列挙していますが、 certmgr.mscmmc から確認してもよいです。

コモンネームが CN=Windows Azure Tools のものが管理証明書に該当します。
複数ある場合は、サブスクリプション毎にクライアント証明書が格納されることになり、FirendlyNameにサブスクリプション名が入ります。

# pubsettingsファイルの置き場所を$certfileに設定しユーザーストアに取り込む
$certfile = "C:\Path\To\download.pubsettings"
Import-AzurePublishSettingsFile $certfile

# ユーザーストアの証明書を列挙
Set-Location Cert:\CurrentUser\My
Get-ChildItem | Select-Object Subject, FriendlyName, Thumbprint

注意点

クライアント証明書の扱いになるので有効期限が切れると使用できなくなり再取得&再ストアが必要になります。
また、FiendlyNameは取得時点のサブスクリプション名称が入りますが、取得後にサブスクリプション名が変化してもSubscriptionIdはユニークとなるため証明書は継続して利用ができます(名称変更時点での取り直しは不要)。

なお、pubsettingsファイルは認証アカウントそのものと同じようにお取り扱いには注意が必要です。

ARM系コマンド

ARMリソースの管理コマンドレットの場合は、先述の管理証明書は使用できなくなっています。
幾つかの方法が提示されていますが、PowerShellスクリプトをコンソールからの実行やVisual Studio Codeからサブスクリプションを切り替えて実行するケースでは下記の方法でサブスクリプション用のアクセストークンを保存し、スクリプトの処理中に呼び出す方法がよさそうです。

docs.microsoft.com

# 一度取得したいサブスクリプションにログイン
Login-AzureRmAccount

# 取得した資格情報を保存
Save-AzureRmProfile -Path "C:\Path\To\file.json"

-Pathで指定した箇所にjsonがダウンロードされるので、次回実行時はスクリプト内でこのファイルを呼び出せば認証完了した状態になります。

Import-AzureRmContext -Path "C:\Path\To\file.json"

注意点

いうまでもなくファイルのお取り扱いには注意(ry

調査中

Import-AzureRmContext で取得したアクセストークンの有効期限がよくわからないので調査

追記(2018/5/1)

Save-AzureRmProfile はoutdatedした模様。 最近のAzureRM.profileでは Import-AzureRmContext を使用しましょう

追記(2018/1/15)

Azure PowerShell 4.4.0から認証情報保存コマンドレットが追加された模様。

Enable-AzureRmContextAutosave

Azure PowerShell (ARM) で毎回ログインしなくて済む方法 – 一身独立して、一国独立す。

Xiaomi Air 13.3 2017年モデル使用感など 

Windows10機が故障のため買い替え。
旧母艦であるPhenomIIデスクトップ機でやっていたちょっとした開発作業や動画エンコーディングをこなせる程度に中庸なスペックでそこそこ軽いノートブック、が要件ということで色々物色した結果ベストバランスだったのが本機。

Gearbestから購入

Core i5-7200U Fingerprint Sensor 256GBモデルをプロモーションコード適用で$753.99(JPY84,923)で購入。
この価格はそこまでセールス価格ではないものの、欲しいときが買い時、かつ特価が設定されていないタイミングでは納期で待たされる可能性が低いとみてPaypal決済で購入。
結果としてChina Warehouse指定で送料の最も安いJPEXPHRで一週間で手元に届きました。

f:id:non216:20171108232137p:plain

梱包

ファーストラインワーカーが落下させたのか、コンベアで当たり所が悪かったのか不明ですが、化粧箱の内側にも若干ダメージがあったのがご愛敬。

f:id:non216:20171109010144j:plain

f:id:non216:20171109010205j:plain

まずは中国語版Windows10をやっつける

購買レビューはすでに多数あるため認識済みではあったものの、まずは初回起動時に中国語でCortanaが大音量で叫ぶので面食らいます。
これを母国語版に差し替えるところからスタートする必要があるため、その辺の手間がかかる事を厭わないかどうかも購入の判断材料です。
所定の手続きを踏まないとライセンスが引き継げない可能性があるという記事がいくつか見られますが、2017年モデルはCreators Update済のためか、セットアップ中にWi-Fiに繋げる以外の操作は特段の操作は不要でした。

MicorosoftからWindows10のUSBセットアップツールを使用し、Windows10 Home 64bit版としてメディアを作成後、
起動時F2キー押しっぱで入れるBIOS(UEFI)でUSBから起動できるようにBoot Selectionの設定を変更してセットアップするのみでライセンスを引き継いで無事日本語化完了。

デバイスドライバセットアップ

日本語版Windows10のOSインストール完了後、ネットワーク接続状態で殆どのデバイスは自動認識されます。
Mi OSD Utilityの追加インストールのみで不明なデバイスは表示されない状態になりました。
チップセットnVidiaのドライババージョン更新はお好みで。Mi OSD Utilityのデバイスドライバは小米本家サイトから取得可能です。

小米帮助中心-小米商城

その他の調整

UEFIの設定項目にあるACPI状態別のUSB給電の項目がデフォルトではS3(スリープ状態のみ給電)になっているものの起動が早い本機ではスリープ状態は使わず休止状態をメインに使用しそうなので、休止状態でもUSB給電が可能なようにS4とS5に設定を変更。

f:id:non216:20171111040854p:plain

また、Bootの設定項目で本体を開いたときに電源をONにする設定項目があるためこれも有効にしておいた。

ポジティブポイント

剛性感のあるつくり

ホウボウでMacBook Airの模倣品と言われているものの、似ているのはプロモーションページとアルミ筐体の部分のみで、普通に質感の高いノートブックという印象です。
シギシいう箇所もなく、カッチリ作られています。

f:id:non216:20171109010312j:plain

M.2のパフォーマンス

搭載されているSAMSUNGのMZVLW256HEHPのベンチマークを取ってみました。
以前はこのスコアの半分にも満たないSATA SSDでも実用に不便は感じていなかったので申し分のない性能です。

f:id:non216:20171109002638p:plain

f:id:non216:20171109002647p:plain

ファンクションロックがOS側で制御可

これって最近じゃ当たり前になっているのかもしれませんが、ファンクションキーのFnキー有無の動作がEsc+Fnのみででき、UEFI設定を介さず出来るのがポイントが高いです。
というかWindowsラップトップ機全般でメディアファンクション側のがデフォルトっていうのがそもそも違和感があるんですが、考え方が古い?

コスパの高さ

何はなくとも10万円未満で購入できるWindowsノートブックとしては現状最もスペック&デザイン面では優れているかなーと個人的には思います。
この価格帯でありながら安っぽいトコロがあっても仕方ないかな、と思うところ、まったくそう感じさせない質感。 

ネガティブポイント

ディスプレイ復電時の輝度の制御に難

持ち運び中に気になった点として、暗い場所でディスプレイ消灯状態から再点灯(スリープからの復帰ではなく)する時に一瞬MAX輝度でビガッと眩しく復帰するポケモンフラッシュ効果。
自宅デスクでMAXからそれに近い輝度で使用している場合は気にならないものの、プレゼン中などの暗い室内で最小輝度で使用している場合はかなり違和感を覚えるレベル。 今後BIOS(UEFI)の設定やアップデートで直るかどうか?

Finger Print Sensorの感度

ソフトウェア(Windows Hello)の性能的な部分もある気がしますが、iPhoneのTouch IDやNexus Imprintなどと比較すると明らかに認識失敗率が高いです。 ハードウェア的にはタッチパッド内にSensorを設置したことが構造的に良くないんじゃないかなぁという印象。
後述の理由もありエンタープライズユースな筐体ではそもそもないので、そこまでネガティブなポイントではないのですが折角なら使いたいのでちょっと残念。

f:id:non216:20171109010326j:plain

ディスプレイ傾斜角があと一歩

非タッチながらグレア液晶なのでディスプレイ角度は膝上作業時に微調整することが多く、もう少しだけ倒れてほしいところにギリ届いてない印象です。視野角は広いため、デスクワークでは問題なし。

ワイヤーロック機構なし

プロダクトの位置づけがホームユース想定だと思うので、そもそもそんなことは検討もされていないことなのだと思いますが、ワイヤーロック用のホールがありません。
コスパの良い機材だけに小規模なオフィスユースの候補にもなりそうなところですが、これがないため持ち込みすら規定的にNGという処も多いのではないかと。

全体としては満足度高

ということで、ネガティブポイントは細かいところばかりなので全体的には非常に気に入っており、開発作業が捗りそうな今日この頃です。

f:id:non216:20171109010244j:plain