2010年7月30日金曜日

PowerShell 指定期間内のイベントログを表示、エクスポート

  • このエントリーをはてなブックマークに追加


PowerShellを使って、指定した期間内のログを取得する。

例:七月分のWindows PowerShellに関するイベントログを表示

PS U:\> $beginDate = Get-Date -Date "2010/07/01 00:00:00"
PS U:\> $beginDate

2010年7月1日 0:00:00

PS U:\> $endDate = Get-Date -Date "2010/08/01"
PS U:\> $endDate

2010年8月1日 0:00:00

PS U:\> Get-EventLog -LogName "Windows PowerShell" -After $beginDate -Before $endDate

七月分のWindows PowerShellイベントログをCSVファイルに出力する

PS U:\> Get-EventLog -LogName "Windows PowerShell" -After $beginDate -Before $endDate | Export-Csv c:\temp\ps.csv

Windows PowerShellクックブック

新品価格
¥4,200から
(2012/12/20 21:06時点)

VBscriptで レジストリキーを操作

  • このエントリーをはてなブックマークに追加


今レジストリキーを操作するVBscriptを書いているので、忘れないうちに、メモをしておきたい思います。

VBでレジストリを操作するためのWSH(Windows Scripting Host)のオブジェクトWscript.Shellを使用すると、レジストリキーを管理することが出来ます。

'Wscript.Shellオブジェクトの定義
Dim objWsh
Set objWsh = CreateObject("Wscript.Shell")

Wscript.Shellにはいくつかメソッドがあるので、気軽にレジストリキー、値の作成、変更および削除などの操作が出来ます。
RegWrite
RegRead
RegDelete など

Wscript.Shellオブジェクト詳細

'1つキーと二つ値を作成
'値名は(既定)、値は1
objWsh.RegWrite "HKCU\Software\Test\", 1, "REG_DWORD"
'値名は"testValueName"、値は"testValue"
objWsh.RegWrite "HKCU\Software\Test\testValueName", "testValue", "REG_SZ"

'キー名または値名の値を取得
'(既定)の値
Wscript.Echo objWsh.RegRead("HKCU\Software\Test\")
'testValueNameの値
Wscript.Echo objWsh.RegRead("HKCU\Software\Test\testValueName")

'testValueNameの値をtestValueChangedに変更
objWsh.RegWrite "HKCU\Software\Test\testValueName", "testValueChanged"

'testValueNameを削除
objWsh.RegDelete("HKCU\Software\Test\testValueName")
'キーTestを削除
objWsh.RegDelete("HKCU\Software\Test\")

※注意:RegWriteに複数引数を渡す場合は、括弧をつける必要はない

Wscript.Shellは便利ですが、機能としては十分ではありません。たとえば、サブキーの列挙やREG_MULTI_SZ型の値の変更などは出来ない。じゃ、どうしましょう。これからWMIを使う方法をご紹介いたします。

'サブキーの列挙
'キーHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetのサブキー一覧を取得

const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut = WScript.StdOut
'WMI サービスに接続し、さらに StdRegProv クラスに接続しています
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
'すべてのサブキーを出力する
For Each subkey In arrSubKeys
StdOut.WriteLine subkey
Next

コマンドラインモードで実行すれば、サブキー名が表示される
   cscript.exe [script Name]

'キーまたは値の存在確認、取得、変更
'strValueはnullの場合に、キーまたは値は存在しない。取得した値をstrValue変数に保存
oReg.GetMultiStringValue HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Test", "testValueName", strValue
if IsNull(strValue) Then
  Wscript.echo "not exist"
else
  Wscript.echo "exist"
end if

'変更。testValueNameが存在しない時に、新規作成する
oReg.SetMultiStringValue HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Test","testValueName", Array("a","b")
変更するには、管理者モードで実行する必要があります。

2010年7月29日木曜日

电车里的日志

  • このエントリーをはてなブックマークに追加


现在是日本时间19:20,正在回家的路上。坐在电车里,看着iPhone。突然想写点东西,所以就打开iPhone Blogger程序,写第一个中文日志。
最近工作不曾么忙,回家也和平常一样挺准时。已经形成习惯了,18:45左右开始离开公司,所以现在再电车里。至今我都还没明白日本人为什么天天工作到很完,就感觉他们有时很磨蹭,效率不高,中途还不停地出去吸个烟,喝个饮料什么的,真是幽闲!
我就早点回家,回家吃饭,最近女朋友为我做,真好吃!!!昨天做个红烧肉,呵呵,说是红烧肉其实是不辣椒炒肉。因为女朋友从没做过,哈哈,不过超级好吃!!!
吃完饭,大概就是看看新闻,电视,想接触尽可能多的信息来扩充自己知识面。因为总觉得现在的积累很重要,趁着还挺闲的时候。时间的可贵已深有感触。
11点后就准备睡觉了。充足的睡眠是工作效率的保证,更是健康的保证。所以一直尽量把握睡眠时间。
之后就睡着了,并伴随着似好似坏的梦。好了,要下车了,到此结束!

2010年7月28日水曜日

Open DNS Server

  • このエントリーをはてなブックマークに追加


ネットで公開されている無料DNSサーバー

①OpenDNS

優先DNSサーバー:208.67.222.222

代替DNSサーバー:208.67.220.220


②Google

優先DNSサーバー:8.8.8.8

代替DNSサーバー:8.8.4.4

手元のDNSサーバーがうまく動作しない、プロキシーサーバーが壊れているというような場合は、一時的に公開DNSサーバーを使えば助けになるかもしれない。

VBscriptについてのメモ

  • このエントリーをはてなブックマークに追加


最近よくVBscriptを使って、システム管理用のスクリプトを書いています。ここにメモをしておきます。

①文字列、ログをファイルに出力。
    Set objFso = CreateObject("Scripting.FileSystemObject")
  '読み取り専用でファイルを開く
    Set objFile = objFso.OpenTextFile("c:\test.txt",1)
  '上書きモードで開く
    Set objFile = objFso.OpenTextFile("c:\test.txt",2)
  '追加モードで開く(ファイルが存在しない場合は、新規作成[true])
    Set obfFile = objFso.OpenTextFile("c:\test.txt",8,true)

  ※ログを残すときに、追加モードが一番使われる。

②LDAPを使って、ADオブジェクトや属性を操作
  'ユーザーオブジェクトの属性を取得する
    Set objUser = CreateObject("LDAP://CN=testuser,OU=testOU,DC=test,DC=local")
    objUser.Get([AttributeName])
    Wscript.Echo objUser.distinguishName
    Wscript.Echo objUser.displayname
    ......

  'アカウントの作成
    Set objOU = CreateObject("LDAP://OU=testOU,DC=test,DC=local")
    Set objUser = objOU.Create("User","CN=testUser")
    objUser.Put "sAMAccountName", "yechangyao"
    objUser.SetInfo

  '属性の設定、変更
    Set objUser = CreateObject("LDAP://CN=testuser,OU=testOU,DC=test,DC=local")
    objUser.Put "displayName", "ye changyao"
    objUser.Put "mail","cye@test.co.jp"
    objUser.Put "userPrincipalName", "cye@test.local"
    objUser.SetInfo

  'ユーザーパスワードの設定
    objUser.SetPassword "Password!"

  'ユーザーアカウントの無効化
    objUser.AccountDisabled = TRUE

  '"DC=test,DC=local"のような文字列を取得
    Set objRootDSE = GetObject("LDAP://RootDSE")
    Wscript.Echo objRootDSE.get("defaultNamingContext")

VBscript リファレンス MSDN

ADSI LDAP Provider MSDN
    
  

2010年7月21日水曜日

VMware Host Agentサービスを起動できない

  • このエントリーをはてなブックマークに追加


今日はopenSUSEを操作してみたいと思います。しかし、VMware Web Accessで仮想マシンに接続しようとするときに、以下のエラーが出てきました。
サービスの状態をチェックしたところ、VMware Host Agentサービスが開始されたいないことが確認でした。これが原因でVMサーバーにアクセスすることはできませんでした。開始しようと思って、またイベントエラー出ました。イベントID 7000

    VMware Host Agent サービスを、次のエラーが原因で開始できませんでした:
    そのサービスは指定時間内に開始要求または制御要求に応答しませんでした。

イベントID 7000を調べてみたら、Detailsが見つかりました。
   To display the WIN32_EXIT_CODE error that SCM encountered when trying to start the program, at the command prompt.
   type sc query service name
   The information displayed can help you troubleshoot possible causes for the error.
   If the WIN32_EXIT_CODE is zero, then SCM did not attempt to start the service because the error was detected first.

   sc query VMwareHostd を実行したところ、Win32_Exit_codeの値は0でした。

同じ現象にあった方も結構いるんです。しかも、解決方法もそれぞれでした。

IPv6を無効にしていないことが原因であるケースもありました


私の場合は、自分でインストールしたファイアウォール(COMODO)がD:\Program Files (x86)\VMware\VMware Server\vmware-hostd.exeをブロックしたことが原因でした。vmware-hostd.exeを信頼アプリリストに追加して、正常にサービスを起動することができました。

ようやく解決できました。本当によかったです。

2010年7月20日火曜日

openSUSE11.3をインストールしてみた

  • このエントリーをはてなブックマークに追加


2010年7月15日、openSUSE 11.3がリリースされました。早速自宅PCで仮想マシンとしてインストールして、触ってみたいと思います。Linuxの初心者なので、いろいろわからない点があるが、少しずつ勉強していこうと思っています。そして、ここにインストール時のスクリーンショットを貼っておきます。

以下のURLから、openSUSE 11.3のisoファイルを入手する。

openSUSE 11.3 ダウンロード

VMware仮想マシンを作ってから、isoファイルをマウントする。ブート画面が表示される。インストールと言語設定、TimeZoneの指定、それが終わったら、以下の図の示したパーティションの作成のステップに入る。
推奨されたままでいいし、自分で設定しても当然問題ないです。個人の好みによって、設定すればいいでしょう。ユーザーの作成
全般インストール設定のチェック
インストール開始、予想以上時間がかかりました。一時間以上でした。
再起動したら、自動構成が始まる
自動構成が完了したら、ログオン画面でパスワードを入力し、ログオンする
ここまで、インストールが終了。
これから、試してみたいと思います。

2010年7月17日土曜日

無料ソフトWebサイトを紹介

  • このエントリーをはてなブックマークに追加


今日は、いくつかの無料ソフトWebサイトをご紹介したいと思います。普段無料ソフトを使っている方も多いでしょう。無料ソフトはある程度機能が制限されている場合が多いと思いますが、普通のユーザーさんにとって、機能的には十分だと考えております。

これからご紹介するサイトには、ブラウザー、マルウェア対策から、写真と画像の処理、ドライバまで、幅広く無償ソフトが揃っています。人気ソフトランキングも表示されるので、選ぶ際に参考になると思います。ぜひご覧になって見てください。

FileHippo.com

k本的に無料ソフト フリーソフト

2010年7月15日木曜日

Windows Error をスキャン

  • このエントリーをはてなブックマークに追加


コンピュータの動作が遅くなったり、クラッシュの回数も増えたりしていませんか、こうした現象は多くの場合は、時間がたつにつれレジストリの肥大化と関連しています。

Microsoftが提供するレジストリエラースキャンツールRegistryBoosterがあります。気軽にレジストリエラーを検出し、修復することができます。定期的にスキャンにより、レジストリのクリーンな状態を保ちます。ぜひ使ってみてください。

RegistryBoosterをダウンロード(CNET)


残念ながら、無料ツールではない。無料で使用できるなら、いいなぁ!

Hyper-V仮想NICが削除できなくなった場合

  • このエントリーをはてなブックマークに追加


Hyper-V仮想ネットワークがちゃんと構成されていない などの原因で、作成された仮想NICが削除できなくなる場合があります。このような現象が起こったら、【ネットワーク接続】で仮想NICのアイコンがずっと消えないまま表示されます。なんか気持ち悪い、どうしても削除したいと思われる方もいるでしょう。

ここで削除方法をご紹介いたします。レジストリを編集する必要があるので、十分注意して作業を実施していただきたいと思います。事前にレジストリをバックアップするのが最善でしょう。

①【ネットワーク接続】の画面で、削除したい仮想NICのデバイス名を確認する。
  表示モードを「詳細」にして、探しやすくなると思います。


②レジストリエディタ(regedit.exe)を起動する。
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\VMSMP\NicListの中のキー(651E1842-B451-42CB-A2FE-EBA933D3FB22のような文字列)から、FriendlyNameの値が①で確認したデバイス名である項目を探します。同じキーの中に、DeviceGuidの値を確認して、記録します(\Device\{F66840F8-9807-4B1F-B4CA-A119794C33A7}のような文字列)。


③HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}の中のキー(0000のような文字列)から、NetCfgInstancesIDの値がDeviceGuidの値の{}の部分と同じである項目を探します。探したら、同じキーの中に、Characteristicsの値を0に変更します。


④デバイスマネージャーから、アンインストール(削除)が出来るようになります。

2010年7月14日水曜日

Hyper-V ネットワーク

  • このエントリーをはてなブックマークに追加


Hyper-Vには以下三種類のネットワークが提供されています。

1:外部ネットワーク → ゲストの間、ゲストとホストの間、ゲストと外部端末の間でお互いに接続できる
2:内部ネットワーク → ゲストの間、ゲストとホストの間でお互いに接続できる
3:プライベートネットワーク → ゲストの間でお互いに接続できる

Hyper-Vネットワーク未構成時
  物理NICが通常のように使われる


Hyper-Vプライベートネットワーク構成時
  プライベートネットワークを構成したら、目に見えない仮想スイッチが作成される。物理NICは外との通信に使用される。ゲストたちは仮想NICを使って、お互いに通信する。



Hyper-V内部ネットワーク構成時
  内部ネットワーク構成後、ホスト側で仮想NICが作成される。
  物理NICは外と接続している。
  仮想NICはゲストと通信するのに使われる。
  物理NIC、仮想NIC、両方ともIPアドレスの設定が可能。



Hyper-V外部ネットワーク構成時
  外部ネットワークが構成されたら、物理NICは仮想スイッチの役割を担うことになったので、IPアドレスの割り当てはできません。その代わりに、もう一個仮想NICが作成され、こちらでIPアドレスの設定作業を行います。仮想NICはゲストとホスト、ホストと外の通信に使用されることになりました。責任が重いですね。



注意
  物理NICの個数と構成できる外部ネットワークの個数は一対一の関係。

ARP, GETMAC, MSG コマンド

  • このエントリーをはてなブックマークに追加


ARPテーブルとは、Ethernetの通信に必要なIPアドレスとMACアドレスの対応情報のことです。。これらの情報は通常OSが管理しているので、ユーザーが内容を変更する必要はありません。

ヘルプを表示
  arp -?

GETMACコマンドは、名前のとおり、コンピュータのMACアドレスやトランスポート名を表示するコマンドです。

MSGは、ユーザー名あるいはセッション名やセッションIDを指定して、相手にメッセージを送信するためのコマンドです。

Diigo

  • このエントリーをはてなブックマークに追加



Posted from Diigo. The rest of my favorite links are here.

Exchange Server データベースとデータベース可用性グループを削除

  • このエントリーをはてなブックマークに追加


GUIでメールボックスデータベースを削除しようとする時に、エラー画面がよく出てきます。エラーが出るのがすごく嫌いです。PowerShell コマンドで実施したほうがいいと思います。しかもこれもMSの推奨のやり方です。

1:メールボックスデータベースを削除するには、事前にデータベース中のメールボックスを無効、別のデータベースに移動、または削除する必要があります。

まずは、データベース内のメールボックスを削除する
  Get-Mailbox -Database [database name] | Foreach{ Remove-Mailbox -Identity $_ }

次に、データベース自体を削除する
  Remove-MailboxDatabase -Identity [database name]


2:DAGを削除するには、先にDAGに参加しているメンバーサーバーを削除する必要があります。
  
メンバーサーバーを一つずつ削除する
  Remove-DatabaseAvailabilityGroupServer -Identity [DAG name] -MailboxServer [mailbox server name]

DAGを削除
  Remove-DatabaseAvailabilityGroup -Identity [DAG name]

2010年7月13日火曜日

SQL Server 2005 フェールオーバークラスタリング

  • このエントリーをはてなブックマークに追加


SQL Server 2005の高可用性を実現してみよう。下記のリンクは構築手順になります。

1:Sql Server2005のクラスタリングで実現する高可用性

2:Vistual Serverでクラスタリング環境を構築

3:仮想的なクラスタリングの実現

4:SQL Server 2005をクラスタ化する











FireFox 4 ベータ版が公開された

  • このエントリーをはてなブックマークに追加


私は最近FireFoxの大ファンになりました。FireFoxの安全性や、低メモリ消費量、豊富なPlug-in、綺麗なデザインなどが非常に気に入ってます。これからも使い続けていこうと思います。

さてFireFox 4 Beta 英語版が既に登場しました。早速PCにインストールしました。
使ってみて、一番印象に残っているのは、デザインがもっと簡潔になったということ。なかなかいい感じがします

FireFox 4 Beta ダウンロード

2010年7月12日月曜日

Net Shareコマンドでフォルダを共有する

  • このエントリーをはてなブックマークに追加


C:\Windows\system32>net share ?
このコマンドの構文は次のとおりです:

NET SHARE
共有名
共有名=ドライブ:パス [/GRANT:ユーザー,[READ | CHANGE | FULL]]
[/USERS:ユーザー数 | /UNLIMITED]
[/REMARK:"テキスト"]
[/CACHE:Manual | Documents| Programs | BranchCach
e | None ]
共有名 [/USERS:ユーザー数 | /UNLIMITED]
[/REMARK:"テキスト"]
[/CACHE:Manual | Documents | Programs | BranchCache | None ]
{共有名 | デバイス名 | ドライブ:パス} /DELETE
共有名 \\コンピューター名 /DELETE


例:c:\temp フォルダを共有し、everyoneにフル権限を与える

    net share shareFolderName=c:\temp /grant:everyone,full

例:フォルダ共有の削除

    net share shareFolderName /delete

USBメモリから、Windows7をインストール

  • このエントリーをはてなブックマークに追加


DVD-ROMドライブを搭載しないノートPCにWindows7をインストールしたい時に、ドライブがない、外付けドアライブを買わなければならないと悩んでいる方もいると思います。実はWindows Vista以降のOSを安価なUSBメモリからでも、インストールできるようになりました。これを実現するには、Diskpartコマンドを使用して、ブート可能なインストールUSBメモリを作成する必要があります。

1:前提条件
①Windows vista以降のOS
②インストールDVD
③USBメモリ(容量はOSイメージファイルのサイズより大きい、4GBでOK)

2:操作方法
①「管理者として実行」でcmdを起動する
②diskpartを入力し、実行
③ディスク一覧を表示
  DISKPART> list disk
④USBメモリを選択
  DISKPART> select disk
⑤ディスクをクリーンな状態にする
  DISKPART> clean
⑥USBメモリにパーティションを作成
  DISKPART> create partition primary
⑦作成したパーティションを選択
  DISKPART> select partition <パーティション番号>
⑧パーティションをアクティブとしてマークする
  DISKPART> active
⑨パーティションをNTFS形式でフォーマット
  DISKPART> format fs=ntfs
⑩ドライブ文字またはマウントポイントを割り当てる
  DISKPART> assign
⑪diskpartを終了
  DISKPART> exit

その後、(Vista,7,Server 2008)インストールDVDの内容をUSBメモリにコピー
ここでは、USBメモリがDドライブ、インストールDVDがEドライブに割り当てられている例を示す。

⑫DVD内容をコピー、(Eから)
C:\> xcopy e:\*.* /s/e/f D:\
⑬USBメモリからブート可能にするには、インストールDVDのbootフォルダにあるbootsectコマンドを実行し、マスターブートコードを更新することが必要です。
C:\> cd /e e:\boot
E:\boot> bootsect /nt60 D:

※bootsect /help    コマンドヘルプが表示される

2010年7月11日日曜日

ROUTE コマンド

  • このエントリーをはてなブックマークに追加


ROUTEコマンドは、ルーティングテーブルの表示や、ルートの追加、削除、変更を行うためのコマンドである。

ROUTEコマンドのオプション一覧

/?            ヘルプを表示
-f             ルートテーブルにあるゲートウェイのエントリをすべてクリアする
-p            [add]コマンドと併用された場合、システムの再起動後もルートは維持される
-4            IPv4の使用を強制
-6            IPv6の使用を強制

ROUTEコマンドのサブコマンド一覧

print          ルートを表示
add           ルートを追加
delete          ルートを削除
change         ルートを変更

①現在のルーティングテーブルを確認する
    route print

②ルートを追加、削除、変更する
    route add <宛先IPアドレス> mask <サブネットマスク> <ゲートウェイ> metric <メトリック> if <インタフェース>
    route delete <宛先IPアドレス>
    route change <宛先IPアドレス> mask <サブネットマスク> <ゲートウェイ> metric <メトリック> if <インタフェース>

※Metric: メトリック値(少ないほど優先度が高くなる)

2010年7月10日土曜日

NSLOOKUP コマンド

  • このエントリーをはてなブックマークに追加


NSLOOKUPは、DNSサーバーに問い合わせを行うためのコマンドである。DNS(Domain Name System)サーバーの動作や設定内容を確認することができます。

NSLOOKUPコマンドのオプション一覧
-all            現在の設定オプションを表示した後、対話モードに入る
-debug          デバックモードに入る
-nodebug        デバックモードを解除する
-d2            詳細なデバックモードに入る
-nod2           詳細なデバックモードを解除する
-defname        指定したホスト名にデフォルトドメイン名を付加して検索
-nodefname       defnameオプションの動作を解除する
-recurse         再起検索を指定する
-norecurse        反復検索を指定する
-search          ドメインサーチリストを付加して検索する
-nosearch       searchオプションの動作を解除する
-vc            TCP接続による検索を行う
-novc           UDP接続による検索を行う
-domain=<ドメイン名>       ディフォルトドメイン名を指定する
-srchlist=<ドメイン名>        ドメインサーチリストを指定する
-root=       ルートDNSサーバーを指定する
-retry=<試行回数>      検索失敗時の試行回数を指定する
-timeout=<タイムアウト秒>  DNSサーバに対するタイムアウト時間を秒数で指定する
-querytype=<検索レコード>    名前解決の対象とするレコードを指定する
-query=<検索レコード>    querytypeと同じ
-type=<検索レコード>     querytypeと同じ
-port=<ポート番号>      DNSサーバーへ接続する際のポート番号を指定する、既定53
-class=<クラス名>      検索するレコードクラスを指定する
-msxfr            高速ゾーン転送モード(many-answers)を指定する
-nomsxfr           msxfrオプションの動作を解除する
-ixfrver=<シリアル番号>   IXFR(Incremental Zone Transfers)差分ゾーン転送モードの使用と、DNSゾーンのシリアル番号を指定する
<ホスト名>/IP/<ドメイン名>  名前解決の対象を指定する

ホスト名からIPアドレスを検索する(正引き)
  nslookup <ホスト名>

IPアドレスからホスト名を検索する(逆引き)
  nslookup

DNSサーバーから特定のレコード情報を取得する
  nslookup -type=<レコード> <ホスト名>
  nslookup -type=<レコード>
  例:nslookup -type=MX hostname.com

  レコードには、主に次のようなものがある。
    ◎A:  ホスト名に対応するIPアドレスを定義
    ◎PTR: IPアドレスに対応するホスト名を定義
    ◎NS:  ネームサーバの定義
    ◎SOA: ドメインの情報を定義
    ◎MX:  メールサーバの定義
    ◎SRV: ネットワークのサービスを定義
    ◎CNAME: ホスト名のエイリアス(別名)の定義

2010年7月9日金曜日

NETSTATコマンド

  • このエントリーをはてなブックマークに追加


今日は、NETSTATコマンドの使い方を書いてみようと思います。
ネットワーク関連のトラブルシューティングにはまだ欠かすことができないツールと言えるでしょう。

Netstatは、ホストの各ポートの使用状況、EthernetおよびIP/TCP/UDP/ICMPの各プロトコルの統計情報の表示、およびルーティングテーブルなどを表示するためのコマンドである。

使い方
    NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]

利用可能なオプションは下記のとおりです。
「オプション一覧」
/?            ヘルプを表示
-a            すべての接続とリッスンポートを表示 [all]
-b            接続中のポートや待機中のポートの作成に使われた実行可能ファイルを表示
-e            Ethernetの統計情報を表示
-n            アドレスとポート番号を数値形式で表示
-o            プロセスIDも表示
-p             指定したプロトコルの接続を表示、TCP,TCPv6,UDPまたはUDPv6を指定する
-r            ルーティングテーブルの内容を表示
-s            プロトコル(IP/ICMP/TCP/UDP)の統計情報を表示
-f            外部アドレスの完全修飾ドメイン名 (FQDN) を表示  
-t            現在の接続のオフロードの状態を表示       

①実行可能なファイルを表示する
netstat -b

アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 125.0.10.178:50078 download:http CLOSE_WAIT
[cmdagent.exe]
TCP 125.0.10.178:50227 tz-in-f191:http TIME_WAIT
TCP 127.0.0.1:49216 cye-PC:49217 ESTABLISHED
[firefox.exe]

②各プロトコルの統計情報を表示する
netstat -s

IPv4 統計

受信したパケット = 1733016
受信したヘッダー エラー = 0
受信したアドレス エラー = 0
転送されたデータグラム = 0
受信した不明プロトコル = 0
受信後に破棄されたパケット = 364
受信後に配信されたパケット = 1748442
出力要求 = 1762634
ルーティング破棄 = 0
破棄された送信パケット = 4
ルートのない送信パケット = 523
再構築が必要 = 0
再構築 = 0
再構築エラー = 0
正常に断片化されたデータグラム = 0
断片化できなかったデータグラム = 0
作成された断片 = 0
......

-eオプションも併用すると、Ethernetに関する統計情報も表示される
netstat -se

③ポートの利用状況を確認する
netstat -an
-anオプションをつけて実行すると、TCPとUDPプロトコルに関して、各接続のローカルアドレス(IP:Port)と外部アドレス(IP:Port)、さらにTCP接続では状態が表示される。

TCPの接続の状態には、5種類がある。
・LISTENING:    待ち受け状態
・SIN_SENT:     サーバに対して通信開始の要求を送信したが、まだ応答を受け取っていないか、相手が無応答の状態
・ESTABLISHED:  TCPコネクションが確立して通信が行われている状態
・CLOSE_WAIT:   相手からFINを受け取った状態
・TIME_WAIT:   コネクションの終了待ち状態

PowerShell Read-Hostコマンド

  • このエントリーをはてなブックマークに追加


PowerShellコマンドプロンプトから入力を一行読み取るためのコマンド。これを使って、ユーザーに入力を求めることができます。

$age = read-host "Please enter your age:"

説明:
このコマンドは、"Please enter your age:" という文字列をプロンプトとして表示します。値が入力されて Enter キーが押されると、その値は $age 変数に保存されます。

PowerShellでWindows Formを作成

  • このエントリーをはてなブックマークに追加




C#で使えるもの(ライブラリ、クラス)をPowerShellでも使用できます。 PowerShellでWindows Formを作ってみました。以下のように一個の関数にまとめました。


function CreateInputBox($formText, $buttonText, $labeltext){
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = $formText
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$objForm.ForeColor = "blue"
$objForm.MaximizeBox = $false
$objForm.MinimizeBox = $false

$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(125,25)
$OKButton.Text = $buttonText
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = $labeltext
$objForm.Controls.Add($objLabel)

$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Location = New-Object System.Drawing.Size(10,40)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)

$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

return $x
}

CreateInputBox "form" "button" "label"

実行すると、絵のようなFormが生成されます。TextBoxに入力された文字列を$x変数に保存し、関数の戻り値としてリターンされる。



$objForm,$OKButtonに対して、属性の設定もできます。