kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

connectでPowerShellのフィードバックを行う

5/9のPowerShell勉強会でLTしてきました。やるつもりはなかったのですが、TFSUGの宣伝にいいかな、と思って95%くらいの時間宣伝で、5%の時間でPowerShellのフィードバック方法の紹介をさせていただきました。connect使うといっても、実際最初の一歩は難しいですしね。

TFSUGの宣伝部分は公開しても仕方ないので、省略して、フィードバックのところだけ公開させていただきます。

f:id:kkamegawa:20150510174726p:plain

私が実際にやったフィードバックのリンクも。

Support disk cleanup command's feature in PowerShell cmdlet | Microsoft Connect

デスクトップエクスペリエンス追加しないとディスククリーンアップツール実行できなくて困っているんですよね。Windows Server 2008 R2までは無理やりコピーすればよかったんですが、2012以降その手が使えなくて。

日本固有の話(文字コード周りとか特に)じっくりと時間をかけて話さないといけないので、折れない心重要かと思います。組織票や英語が堪能な人にコメントつけてもらうとかもぜひ。

こんな英語でも結構通じるし、翻訳サイトとかで一度「自分の書いた英語」を通してどんな翻訳結果になるかというのを見るのもいいかと思います。

APIの活用とロードテストの実施 が公開されました

気づいていなかった…23日に最終回が公開されていました。前回公開した第二回が長すぎて分割されたものです。

New Relic APIもたくさんありますが、エージェントでどの処理をどう通ったのか、という記録をカスタムダッシュボードに反映させる方法とPowerShellでREST APIを呼び出して、情報を取得する方法を紹介しています。

Application Insightsは独自ログのカスタマイズ方法とVisual Studio Onlineを使った簡単ロードテスト方法です。

Visual Studio Onlineのロードテストは残念ながらUltimate契約が必要ですが、これをひな形にすれば独自に作っていくこともできますね。

Application Insightsの弱みはモバイル対応の少なさですが、HotkeyAppを買収したことで強化されるんでしょう。

Xamarinを使っている方はXamarin Insightsというサービスがあるので、これからやろうという人はこちらを使うのもいいんでしょうか。

ほんのさわりのところだけの紹介なので、これからどちらのサービスも使ってみてください。

PowerShellでSQL Serverの古いログ関係を削除する

これはPowerShell Advent Calendar 12/25分の記事です。


PowerShell Advent Calendar 2014 : ATND

ほんとはネットワーク切り替え時にIEのProxyを書きかえるスクリプトを作ろうと思ったのですが、ちょっと間に合わなかったので、別ネタです。ネットワーク関係で追加されたコマンドレットがWindows 8専用だとは思わなかったorz(PowerShell 4.0を入れてもWindows 7には追加されなかった)。

SQL Serverのメンテナンスプランでは古いログを削除するとか、特定の拡張子に基づいて削除するということができます。しかし、ちょっとした失敗などでメンテナンスプランが途中で終わったときや、失敗してダンプができた場合とかどんどんたまっていきます。

そういうことで、ちょっとスクリプトを作ってみました。SMOをロードして、必要な情報をいただいています。SQL Serverのマルチインスタンスや、リモートサーバーには対応しておりません(^^;。

トランザクションログは最新の完全バックアップ以前のファイルを削除するということでやっております。

Remove old SQL Server Transaction log, and Backup ...

PowerShellで実行予定のタスクを列挙する

これはPowerShell Advent Calendar 12/14分の記事です。


PowerShell Advent Calendar 2014 : ATND

Windowsのタスクスケジューラ、結構便利に使えます。Windows Server 2003の時代は「もうちょっとなぁ」と思いつつも使っていましたが、Windows Server 2008/Vistaから「なにこれすごい」って状態になって、高価なジョブ管理ソフト買うまでもないような場合において、大変助かりました*1

UNIX系にあるcronのほうが便利なこともあるのですが、cronはいまだに「次の実行日」が表示されないので、たまにしか使わない人は書式間違えると悲惨なことになるので…。

タスクスケジューラを本格的に業務として使うには祝祭日が何とかなればと思いますが、そういうのは後付でスクリプトの中などで考えましょう。ちなみに私はフェイルオーバークラスタでもうまく動くようにさせてました。

さて、本題です。タスクスケジューラのAPIにはWindows Server 2003互換のV1と呼ばれるものと、Vista以降でしか使えないV2と呼ばれるものがあります。コマンドラインツールのschtasks.exeはV1とV2両方対応していますが、V2だけ考えればいいでしょう。コマンドでやるのは…という方向きにはAPIもあります。

Task Scheduler (Windows)

みんな大好きCOMです。タスク作って、トリガー定義して、アクション登録して…結構面倒です。列挙するだけでも大変ですが、そこでPowerShellですよ。

とりあえず、簡単なところで、「時間が指定されているタスクが何時に起動するか」という情報を列挙するワンライナー。業務でスケジュールしようと思うと、「ここが空いてそうだからこの時間に差し込む」ということをしばしば考えます。そういうときに便利です。もちろん、Windowsの標準レポートで出してくれるようになるのも歓迎なので、Microsoftさん待ってます*2

Task Scheduler will run information.

結果はこんな感じ。

f:id:kkamegawa:20141213170257p:plain

時間指定されているタスクは意外と多くありません。なんらかのトリガーが指定されているものが多いようです。

*1:特に「月末」が定義されたのが大きい

*2:ま、自分で作ってもいいくらいのものですが