ネタ元1:アプリケーションプールを作成する方法 (IIS WMI) (元MS社員 の だどさんのサイト)

ネタ元2:New-WebSite error (iis.net)

ネタ元3: PowerShell Provider for IIS 7.0 (x86) - CTP2 (iis.net)

 

元MS社員のだどさん が IIS用のWMI + VBScript を使ったWebサイト記事を更新したそうなのですが、

全部これPowerShellでできるんじゃないかと 思い、

iis.net のサイトから、PowerShell Provider for IIS 7.0 (x86) - CTP2 を入手し、

New-AppPool コマンドレットやWmiClassを使って試しにアプリケーションプールを作ってみました。

しかし、どうも動きがおかしいようです。

 

■VBScriptでIIS7のアプリケーションプールを作成する場合(だどさんのWebサイトで公開中)
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppPool = oWebAdmin.Get("ApplicationPool")
oAppPool.Create("NewAppPool1")

 

■PowerShell Provider for IIS 7.0 (x86) - CTP2 を使って、New-AppPoolコマンドレットを使った場合

PS IIS:\> New-AppPool -Name NewApplicationPool1
 
Name                     State        Applications
----                     -----        ------------
NewApplicationPool1
 
New-AppPool : オブジェクト識別子が有効なオブジェクトを表現していません。 
(HRESULT からの例外: 0x800710D8)
発生場所 行:1 文字:12
+ New-AppPool  <<<< -Name NewApplicationPool1

 

ただし、New-AppPoolでエラーになるもののアプリケーションプール自体はIISで作られている

 

■PowerShell Provider for IIS 7.0 (x86) - CTP2 とWMIを使ってアプリケーションプールを作成した場合

$pool = ([WmiClass]"\\.\root\MicrosoftIISV2:IIsApplicationPoolSetting").CreateInstance()
$pool.Name = "W3SVC/AppPools/NewApplicationPool1"
$options = New-Object System.Management.PutOptions
$options.Type = [System.Management.PutType]::CreateOnly
$pool.Put($options)
 
"1" 個の引数を指定して "Put" を呼び出し中に例外が発生しました: "null 値の式では
メソッドを呼び出せません。"
発生場所 行:1 文字:10
+ $pool.Put( <<<< $options)

 

ただし、WMI版の方は、実際にアプリケーションプールがIIS上で作成されていない。

 

どうもこれはバグであるという認識はあるようで、次期バージョンのリリースではこのバグは修正される予定とのことです。

IIS7 の PowerShell対応はまだまだこれからですね。

IISのPowerShell化が進むと、Webアプリケーションでシステム組んでいる人はリリース作業が非常に楽になります。

一応、IIS7 + PowerShell に関する情報が非常に少ないので、この情報をUPしておきたいと思います。


Posted in:   Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
mutaguchi posted on 11月 24, 2008 18:55

はじめまして、むたぐち(牟田口大介)と申します。

HIROさんからご招待を受けて、こちらに参加させていただくことになりました。といっても実はずいぶん前からお誘いを受けていたんですが色々あって遅くなっちゃいました。

メインはわんくま同盟というところでScripting Weblogというのをやっていて、そちらでPoweerShellやその他スクリプト、プログラミングを中心に情報発信しています。また、オフラインでも講師などをやっています。ですので、今後もPowerShellの記事はそちらで中心に書いていこうと思っています。RSSはHIROさんに貼っていただいているので、左のサイドバーからご参照くださいませ。

また、今年の4月にPowerShellの書籍Windows PowerShell ポケットリファレンスを技術評論社さんから書かせていただきました。

PowerShellの公式サイトにも記事を寄稿させていただいたことがあります。 

ソーシャルネットワークサイトmixiでもPowerShellコミュニティの管理人をやっております。

PowerShellもですがWSHを昔からさわっていて、Windows Script Host Laboratoryというサイトも運営しています。

PowerShellの国内情報をリンク集としてまとめておりますので、そちらもご参照ください。

WSHについては@ITさんでチェック式 WSH入門 という連載記事を書かせていただいてます。

Microsoft MVP for Data Center Management - Admin Frameworks という賞を受賞していまして、一応、PowerShellのコミュニティ専門家というお墨付きはあるようですが、実はここにいらっしゃるみなさんほど活動してないのでごめんなさいです^^; 

他にもいろいろWebでは活動していまして(作曲とか)、ご興味がありましたらwinscript.jpという私が運営しているサイトをご覧ください。プライベート日記はこちらです。

宣伝ばかりで申し訳ないです^^;が、こんな感じでやっていこうと思いますのでよろしくお願いします。


Posted in: お知らせ  Tags:

現在のレート 4.0 (2人)

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

仕事でいろいろなことをスクリプトで自動化することがある。「これやらなきゃ」と思ってスクリプトを実行して、そのスクリプトがしばらくかかるものならメールをチェックしたり、他の作業を同時進行することが多いのだ。そんな状況でよくあるのが、そのスクリプトを実行したことさえも忘れてしまい、いろいろなウィンドウの後ろにコンソールウィンドウがひっそりと我慢強く待っていてくれたのを一時間ぐらい後に発見する。

こんなことが起きるのはスクリプトにはあまり目立ったお知らせ機能がないからだ。Outlookだと「ダディディン!」という音と共にポップアップウィンドウで会議があと何分後にあることを知らせてくれる。スクリプトだってそのプロセスが終わったことを知らせてくれるもっと目立つ機能があってもいいのではないかと考えてPowerShellでやってみた。次に紹介するのも.NET Frameworkのおかげなのだ。

まずはバルーン機能からやってみる。そもそもバルーンとは何か。下の画像を見ていただければ一目瞭然だ。

image

Windowsを使いなら一度は見たことがあるだろう。

まず最初に、矢印のアイコンに注目する。標準のアイコンというものはなく自分で指定してやらなければいけない。スクリプトが自分のコンピュータのみで動作するのだったらいいが、そのスクリプトが他のコンピュータにも配布されるということを想定して、アイコンをBase64の文字列に変換しスクリプト内に埋め込んでみる。まずはBase64文字列に変換する作業から。

まずはファイルをByte配列としてメモリに読み込む。それをBase64文字列に変換。ちなみに今回の記事でPowerShellらしいところといえばGet-Contentのみだろう。あとは.NET Frameworkを直接使っている。

image

このBase64文字列をスクリプト内に埋め込むことにする。

もう一度確認するが、このスクリプトの目的はバルーンを使ってスクリプトの実行が終了することをより視覚的に知らせることである。それをするために次のようなスクリプトを書いてみた。

#デフォルトではSystem.Windows.Formsは読み込まれていないので、それを初めに読み込む。
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
 
#NotifyIconクラスを使うので、インスタンスを作成。
$NotifyIcon = New-Object System.Windows.Forms.NotifyIcon
 
# アイコンを表すBase64文字列を変数に格納しておく。このようにしてアイコンやいろいろなバイナ
# リデータをBase64文字列としてスクリプト内に格納することも可能だが、データのサイズが大きい
# と文字列も長くなってしまうので注意。
$iconString = "AAABAAIAEBAAAAAAAABoAwAAJgAAABAQEAAAAAAAKAEAAI4DAAAoAAAAEAAAACAAA(HTMLの関係上略)"
 
# Base64文字列をByte配列に変換。
$binaryData = [System.Convert]::FromBase64String($iconString)
 
# 次の4行でByte配列に格納されていたアイコンをSystem.Drawing.Iconにして使えるようにする。
$memStream = New-Object System.IO.MemoryStream
$memStream.Write($binaryData, 0, $binaryData.Length)
$memStream.Position = 0
$icon = New-Object System.Drawing.Icon($memStream)
 
$memStream.Close()
 
# 最終的にIconプロパティを上で作ったIconオブジェクトにセットし、ShowballoonTipメソッドを
# 実行する。
$NotifyIcon.Icon = $icon
$NotifyIcon.Visible = $true
$NotifyIcon.ShowBalloonTip(100000, "俺のスクリプト", "スクリプトは終了しましたよ!", "Info")
 

これをファイルに格納してPowerShell上で実行すると、下のようにPowerShellからバルーンを使うことができる。

image

ちなみにSystem.Media.SoundPlayerを使えば音を鳴らすことだって可能だ。音を使えばより効果的であることは容易に想像できる。あまり詳しく説明しないが次のように音を鳴らすこともできるのだ。

$SoundPlayer = New-Object System.Media.SoundPlayer("$env:SystemRoot\Media\chimes.wav")
1..3 | foreach{$SoundPlayer.Play();[System.Threading.Thread]::Sleep(1000)}

Posted in:   Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

PowerShellのスクリプトをPowerGUIで編集していたらコピペができない事態が生じたので、秀丸で編集しようと思ったら強調表示定義ファイルがない・・・ということで作ってみました。キーワードが文字列内で強調されないようにしたかったけど、正規表現がちょっとめんどかったのでそのままにしてしまいました。

ファイルはここからダウンロードできます。

一応秀丸サイトにも投稿しておきます。


Posted in: PowerShell  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Team Foundation Serverを使うようになってからもうかれこれ2年ぐらいが経つ。その間にだんだんソリューションファイルが多くなってきたり、一つの製品の開発環境を作るのにあっちをいじったりこっちをいじったりしなきゃいけなくなってきたので、自動化を試みている。その一環としてPowerShellを使ってTeam Foundation Serverから最新バージョンのコードをダウンロードするコードを書いてみた。

param
(
    $tfsServerName = $(Throw "TFSのサーバ名を入力してください。"),
    $localFolderPath = $(Throw "ローカルのフォルダパスを入力してください。"),
    $Domain = "",
    $Username = "",
    $Password = "",
    [String[]] $getPaths = $(Throw "サーバ側から最新コードをダウンロードするパスを配列として渡してください。")
)
 
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.VersionControl.Client")
 
$credential = $null
 
if (($Username -eq "") -or ($Password -eq ""))
{
    $credential = Get-Credential
}
else
{
    $credential = New-Object System.Net.NetworkCredential($Username, $Password, $Domain)
}
 
#TeamFoundationServerオブジェクトを作成。
$tfs = New-Object Microsoft.TeamFoundation.Client.TeamFoundationServer($tfsServerName, $credential)
$tfs.Authenticate()
 
# VersionControlServerを使ってWorkspaceオブジェクトを取得。
$vcs = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])
$ws = $vcs.GetWorkspace($localFolderPath)
 
$ws.Get($getPaths, [Microsoft.TeamFoundation.VersionControl.Client.VersionSpec]::Latest, "Full", "GetAll")
 

Posted in: PowerShell  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted in: PowerShell  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
HIRO posted on 11月 12, 2008 15:35

本日の業務にて、あるディレクトリ以下にあるファイルをすべてURLエンコードしたかったので、PowerShellで下記関数を作成しました。

UrlEncodeメソッドを使用するだけなんですが、毎回 [reflection.assembly]::LoadWith~ なんて記述するのは面倒なので関数化しました。

おまけでデコードする関数も付けておきます。

[void][reflection.assembly]::LoadWithPartialName("System.Web")
#===============================================================================
# Get-UrlEncode: 指定した文字列をURLエンコードして返す
#
# パラメータ:
#       $EncodeString: エンコードする文字列
#
# 使用例
#       PS > Get-UrlEncode マイクロソフト
#       PS > %e3%83%9e%e3%82%a4%e3%82%af%e3%83%ad%e3%82%bd%e3%83%95%e3%83%88
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#===============================================================================
function global:Get-UrlEncode([string]$EncodeString)
{
    return [System.Web.HttpUtility]::UrlEncode($EncodeString)
}
#===============================================================================
# Get-UrlEncode: 指定した文字列をURLデコードして返す
#
# パラメータ:
#       $EncodeString: デコードする文字列
#
# 使用例
#       PS > Get-UrlDecode %e3%83%9e%e3%82%a4%e3%82%af%e3%83%ad%e3%82%bd%e3%83%95%e3%83%88
#       PS > マイクロソフト
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#===============================================================================
function global:Get-UrlDecode([string]$DecodeString)
{
    return [System.Web.HttpUtility]::UrlDecode($DecodeString)
}

 

たとえばC:\WorkにあるすべてのファイルをURLエンコードする場合は、

PS > dir c:\work | %{Get-UrlEncode $_.Name}

とします


Posted in: PowerShell  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Admin posted on 11月 2, 2008 00:02

10月末に株式会社オライリージャパン様より、PowerShell from Japan!! メンバーへ「Windows PowerShell クックブック」を献本していただきました。

メンバーを代表しましてお礼を申し上げます。本当にありがとうございました。

本書は630ページというボリュームのため、すべてを読み切ってはいないのですが、感想を書きたいと思います。

なんといっても、この本の特徴は使用例の豊富さとわかりやすい解説にあるといえるでしょう 。

どのようなプログラミング言語でもはじめて学ぶには、何かしらのドキュメントを読むことになるかと思います。

そのようなとき、文章だけでだらだらと説明されてもどのように使用して良いのかは読み取ることができないものです。

本書は、その豊富な例題により、どのように使用すべきかをわかりやすい文章とともに掲載してあります。

また、使用例の中には実務ですぐに使えそうなサンプルコード、効果的なテクニックなど惜しむことなく掲載されています。

使用例もすばらしいのですが、個人的には巻末の付録もすごく好きです。

付録では、変数の使い方等の基本的な事項から、.NET Framework、ComObjectの使用方法、正規表現に至るまで、「かゆいところに手が届く」という言葉がふさわしい本となっております。

PowerShellをこれから学ぼうとしている方も、体得してしまった方も、是非バイブルとして手元に置いていただきたい1冊です。

書籍情報

タイトル:Windows PowerShell クックブック

著者:Lee Holmes(リー・ホームズ)

監訳者:マイクロソフト株式会社 ITプロエバンジェリストチーム

翻訳:菅野良二(かんのりょうじ)

ISBN:978-4-87311-382-1

本体価格:4,000円

判形:B5版

ページ数:630

発行:2008年10月発行

Web: http://www.oreilly.co.jp/books/9784873113821/

 


Posted in:   Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Admin posted on 11月 1, 2008 23:08

10月度人気記事

今月もっとも人気のあった記事は、けろ-みおさんによる

SQLServer 2008 でPowerShellを使おう~DB&テーブル作成編~ 

でした。

最新のSQL Server 2008は Windows PowerShell を標準搭載しています。

この記事ではPowerShellからSQL Serverへのデータベースやテーブルの作成方法について、わかりやすく解説されています。

まだ読まれていない方は、この機会に是非ご覧ください。

次に人気のあったのが 山口さんによる

カスタムプロバイダーを作ってみよう その1

でした。この記事は連載となっており

  全5本からなっています。

 日本語で解説されているものは、山口さんのProgrammable LifePowerShell from Japan!! でしかありません。

 こちらも、まだ読まれていない方は是非どうぞ!!

10月度ページビュー

徐々にユニークユーザー、ページ数ともに上昇してきております。

訪問いただいた皆様ありがとうございました。

11月度もよろしくお願いいたします。

 

  ユニークユーザー ページ
2008/10/1 160 1368
2008/10/2 171 1352
2008/10/3 135 1282
2008/10/4 71 369
2008/10/5 110 635
2008/10/6 158 1363
2008/10/7 153 1091
2008/10/8 163 672
2008/10/9 166 1363
2008/10/10 163 718
2008/10/11 96 419
2008/10/12 83 376
2008/10/13 101 628
2008/10/14 175 1648
2008/10/15 163 1385
2008/10/16 178 1399
2008/10/17 139 1241
2008/10/18 101 433
2008/10/19 121 936
2008/10/20 186 1703
2008/10/21 197 1276
2008/10/22 203 1404
2008/10/23 221 1501
2008/10/24 170 1257
2008/10/25 111 413
2008/10/26 120 493
2008/10/27 138 1083
2008/10/28 174 1105
2008/10/29 179 1159
2008/10/30 163 654
2008/10/31 138 1087
平均 148.61 1026.23
合計 4607 31813

Posted in: ページビュー  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Calendar

«  1月 2009  »
月曜火曜水曜木曜金曜土曜日曜
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678
View posts in large calendar

Recent Posts

Recent Comments

Banners

Theme Grabber
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2009 PowerShell from Japan!!