高度な関数

by HIRO 9. 3月 2010 09:21

PowerShell 2.0ではPowerShellスクリプトでコマンドレットを作成することができます。

このことを記事にしたものがCodeZineにて公開になりましたので、是非お読みください。

PowerShell 2.0の新機能(4) ~高度な関数~

現在のレート 5.0 (1人)

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

Tags:

CodeZine | PowerShell 2.0

PowerShell を覚えよう!

by HIRO 5. 3月 2010 08:33

どうもHIROです。

最近、「PowerShellはどうやって覚えていったらいいんだろう?」という質問をよく受けます。

PowerShell が Windows 7やWindows 2008 R2等に標準搭載されるようになり、使ってみようという方も増えてきたのではないでしょうか?

宣伝になってしまいますが、翔泳社さんのCodezineに投稿した記事のリンクまとめを以下に示します。

是非この機会にPowerShellに触れてみてください。

PowerShell入門

独自コマンドレットの開発

Windows PowerShell 活用編

PowerShell ISE

PowerShell 2.0の新機能

現在のレート 5.0 (2人)

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

Tags:

PowerShell | PowerShell 2.0

動作していないデバイスをリストアップする ~PowerShell編~

by HIRO 15. 1月 2010 10:27

ご無沙汰しております。

HIROです。 

本年も PowerShell from Japan!! をよろしくお願いいたします。

さて本年一発目のネタですが、人様のパクリになってしまいました。

ネタもとは gsf_zero1 さんの動作していないデバイスをリストアップするです。

gsf_zero1さんはC# MVPの方で、すばらしい記事を多数書かれておられます。

ぜひご覧ください。(gsf_zero1さんのサイトはこちら → http://d.hatena.ne.jp/gsf_zero1/

 

では本題です。

PowerShell 2.0から、Get-Wmiという新しいコマンドレットが追加されています。

これによりPowerShellからWMI操作を容易に行うことができるようになりました。

今回は、gsf_zero1さんが紹介してくださっているWin32_PnpEntityをPowerShellで使ってみようと思います。

コードは下記の通りです。

Get-WmiObject -Class Win32_PnpEntity -Filter "ConfigManagerErrorCode<>0" | %{$_.Description, $_.ConfigManagerErrorCode} 

 

Get-Wmiコマンドレットは-Classパラメータの後ろにWMI クラスの名前を指定します。また-filterの後ろにはWhere句に相当する文を使用します。

この文はWMI クエリ言語 (WQL) の構文を使用します。

今回示したコードでは、ConfigManagerErrorCode<>0 でないものを抽出し、パイプで受け取っオブジェクトから必要なもののみ(DescriptionとConfigManagerErrorCode)を表示しています。

現在のレート 5.0 (3人)

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

Tags:

PowerShell 2.0 | WMI

[Tips]自己署名証明書を作成するには?

by HIRO 13. 11月 2009 17:04

スクリプトに署名したいけれど、証明書を取得するのにお金をかけたくない場合は自己署名証明を作成することで解決できます。

自分に対する覚え書きという意味合いも込めて、その方法を公開いたします。

下記順番で説明します


自己署名証明書作成ツール

自己署名証明書を作成するには makecert.exe というツールを使用します。

このツールは、Visual Studio.NETをお持ちの方であれば、すでにインストールされています。

もしVisual Studio.NETを持っていないのであれば、無償のSDKをインストールすることで手に入れることができます。
(というかできるはずです。というのも自分はVisual Studioを有しており無償のSDKによる確認は行っていないからです)

今回はVisual Studio 2008 コマンドプロンプトを使用して、makecert.exeを実行する手順を紹介します。

なおOSはXPを使用しましたがVistaやWindows7でも同様の手順でいけると思います。(これもまた未確認です。すみません)


ローカル証明機関の作成方法

まずは、[スタート]-[すべてのプログラム]-[Microsoft Visual Studio 2008]-[Visual Studio Tools]-[Visual Studio 2008 コマンドプロンプト]を起動します。

そして、次のコマンドを入力します。

makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine

上記のコマンドを実行すると数のようにパスワードの入力を求められますが、空のままで OKを押します。

image

すると、「パスワードで保護されません。よろしいですか?」と聞かれるので、ここでは「いいえ」を選択します。

image

コマンドの実行が成功すると「Succeeded」と表示されます。

image

 

再度証明機関を作成し直したい場合の手順も記しておきます。

先ほどのコマンドを実行すると makecert を実行したディレクトリに root.pvk と root.cer という2つのファイルが作成されます。

この2つを削除すれば、最初からやり直すことが可能です。


署名証明書の作成方法

自己署名機関が作成されたので、次は自分宛に署名証明書を発行する必要があります。

これには、Visual Studio 2008 コマンドプロンプトで、次のように入力して実行します。

makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer

コマンドの実行が成功すると、こちらも「Succeeded」と表示されます。

image

ここまで成功したら、PowerShellを起動して、次のコマンドを実行してみましょう。

PS> dir cert:\CurrentUser\My

証明書が作成されていれば、次の図のようにサムプリントが表示されます。

image


スクリプトへの署名方法

スクリプトに署名するには、証明書オブジェクトを取得する必要があります。

これにはPowerShell上で次のようにコマンドを入力します。[0]というのは証明書が1つしかない場合です。複数ある場合は必要な証明書を示す番号に変更します。

PS> $cert = @(dir cert:\CurrentUser\My -CodeSigningCert)[0]

この時点で、取得した証明書オブジェクトは$cert変数に入っています。

最後に、この証明書オブジェクトを使用して、スクリプトに署名します。

PS> Set-AuthenticodeSignature SampleScript.ps1 $cert

おまけ:スクリプトへの署名する関数

スクリプトに署名するために、毎回先ほどのようなコードを入力するのは面倒なので、関数としてまとめました。このコードは以前、[Tips]任意のファイルにデジタル署名するで紹介したものです。

#===============================================================================
# Set-Cert: 指定したファイルにデジタル署名を行う
#
# 使用例:
#   PS > Set-Cert ./Test.ps1
#
# copyright PowerShell from Japan!!(http://powershell.hiros-dot.net/)
#
#===============================================================================
function global:Set-Cert([string]$path)
{
    try
    {
        $cert = Get-ChildItem cert:\CurrentUser\My -CodeSigningCert | ?{$_.Subject -match "PowerShell User"}
        Set-AuthenticodeSignature -FilePath $path -cert $cert
        "デジタル署名に成功しました"
    }
    catch [Exception]
    {
        "デジタル署名に失敗しました"
    }
}

使用方法は次の通りです。

PS > Set-Cert "デジタル署名するファイルのパス"

*この関数は PowerShell User という名前の証明書がある前提で作成しています。

現在のレート 5.0 (2人)

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

Tags:

PowerShell | PowerShell 2.0 | Tips

Hey, Scripting Guy まとめ その3

by HIRO 4. 11月 2009 10:56

Hey, Scripting Guy! の記事をまとめました。

 

Windows PowerShell 2.0 を使用してタブ区切り形式のファイルを並べ替える方法はありますか 2009/08/20 木
Windows PowerShell スクリプトの処理速度を上げる方法はありますか 2009/07/22 水
Windows PowerShell でのループ処理の詳細 2009/04/30 木
Windows PowerShell で Do ~ While ループを使用する方法はありますか 2009/04/29 水、英語
Windows PowerShell で VBScript の While ~ Wend ループに相当するものを使用する方法はありますか 2009/04/28 火、英語
Windows PowerShell を使用してディレクトリ、ファイル、およびフォルダを検索する方法はありますか 2009/04/23 木、英語
Windows PowerShell とパイプライン 2009/04/21 火、英語
Windows PowerShell の概要 2009/04/20 月、英語
Windows PowerShell で Active Directory を検索して行方不明のグループの一覧を表示する方法はありますか 2009/03/18 水
Windows PowerShell から Active Directory を検索する方法はありますか 2009/03/17 火
VBScript の WMI クエリを Windows PowerShell に移行する方法はありますか 2009/03/04 水
Windows PowerShell を使用して Office Access データベースを作成する方法はありますか 2009/02/16 月
Windows PowerShell を使用して、Office Outlook の迷惑メールを処理する方法はありますか 2009/01/26 月、英語
使用中の Windows PowerShell のバージョンを確認する方法はありますか 2009/01/05 月
Windows PowerShell を使用してローカル ユーザー アカウントが存在するかどうかを確認する方法はありますか 2008/05/22 木
Windows PowerShell を使用して一連のファイルで使用されている一意なファイル拡張子を抽出する方法はあり ますか 2008/05/09 金
Windows PowerShell を使用して特定の文字列値を含むファイルの名前と作成日時を返す方法はありますか 2008/05/08 木
Windows PowerShell を使用してファイルの所有者を特定する方法はありますか 2008/04/15 火
Windows PowerShell を使用してフォルダー内のすべての Microsoft Office ドキュメントを確認する方法はありますか 2008/04/11 金
Windows PowerShell を使用してローカル グループにドメイン ユーザーを追加する方法はありますか 2008/03/11 火
Windows PowerShell を使用して GUID を作成する方法はありますか 2008/02/27 水
Windows PowerShell で切断されたレコードセットを使用する方法はありますか 2008/02/15 金
Windows PowerShell を使用して CSV ファイルのデータを並べ替える方法はありますか 2008/02/12 火
Windows PowerShell を使用して一覧から一意ではない項目を取得する方法はありますか 2008/01/31 木
Windows PowerShell を使用してテキスト ファイルの文字を置き換える方法はありますか 2008/01/17 木
Windows PowerShell を使用してデータベースにレコードを追加する方法はありますか 2008/01/15 火
Windows PowerShell を使用して作成されてから 90 日以上経過したすべてのファイルをフォルダから削除する方法はありますか 2007/10/31 水
Windows PowerShell を使用して環境変数と特別なフォルダのパスを取得する方法はありますか 2007/07/12 木
Windows PowerShell を使用してアプリケーションの終了時に通知する方法はありますか 2007/03/26 月
Windows PowerShell を使用してコンピュータ上で開いているすべてのウィンドウの一覧を取得する方法はありますか 2007/02/02 金
Windows PowerShell コンソールの幅を広げる方法はありますか 2006/12/04 月
Windows PowerShell スクリプトに関数を追加する方法はありますか 2006/11/21 火
Windows PowerShell を使用してすべてのコンピュータのリストを取得する方法はありますか 2006/11/09 木
Windows PowerShell を使用してドライブ上のすべての .TMP ファイルを削除する方法はありますか 2006/10/23 月
Windows PowerShell スクリプトを [ファイル名を指定して実行] ダイアログ ボックスやショートカットから実行する方法はありますか 2006/09/26 火
Windows PowerShell を使用して Microsoft Excel を自動化する方法はありますか 2006/09/08 金
Windows PowerShell を使用してコンピュータ上のすべての .WMA ファイルを見つける方法はありますか 2006/08/30 水
Windows PowerShell を使用して Guest アカウントの状態を確認する方法はありますか 2006/08/23 水
Windows PowerShell を使用して Active Directory ユーザー アカウントにバインドする方法はありますか 2006/06/29 木
Windows PowerShell を使用してリモート コンピュータ上のサービスを起動する方法はありますか 2006/06/21 水

現在のレート 5.0 (2人)

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

Tags:

PowerShell | PowerShell 2.0 | Tips | Hey, Scripting Guy!

Calendar

<<  3月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010 PowerShell from Japan!!