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