SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for the ‘PowerShell’ Category

PowerShell で GPO の設定状態を取得

leave a comment

最近、PowerShell を使ってごにょごにょする機会が多く、勉強かねていろいろと作っています。
今回は OU / コンテナにどのような GPO が設定されているかを取得するためのサンプルを。

VBScript チックに書いてしまっているので、まだまだ修行が足りません…。

Read the rest of this entry »

Written by masayuki.ozawa

12月 4th, 2013 at 1:30 am

PowerShell で Active Directory を操作するいくつかの方法

leave a comment

以前、PSRemoting で AD を操作 という投稿をしました。

AD を PowerShell で操作するための方法をいくつかメモとして。

IT プロフェッショナル向けスクリプト リソース / Working with Active Directory using PowerShell ADSI adapter に PowerShell のサンプルがいくつかありますのでこちらが参考になります。

Read the rest of this entry »

Written by masayuki.ozawa

11月 30th, 2013 at 1:12 pm

PSRemoting で AD を操作

leave a comment

OS の展開プロセスの中で、AD に OU やユーザーの作成が必要となることがあります。

その際の設定の覚書を。

Read the rest of this entry »

Written by masayuki.ozawa

11月 12th, 2013 at 8:21 am

Posted in PowerShell

Tagged with

PowerShell で Azure を操作する際のメモ

one comment

PowerShell で Azure を操作する際のメモを。

Windows Azure PowerShell の技術情報は以下のものが参考になります。
Windows Azure PowerShell

Read the rest of this entry »

Written by masayuki.ozawa

4月 29th, 2013 at 10:54 pm

特定ディレクトリ内のファイルを PowerShell で SQL Server に一括で格納

leave a comment

SQL Server 2012 では PowerShell 強化が挙げられていたと思うのですが、今までほとんど使ったことがありませんでした。
SQL Server PowerShell

フルテキストインデックスのテスト用のファイルを varbinary(max) に大量に格納したかったので、PowerShell で作ってみました。

Read the rest of this entry »

Written by masayuki.ozawa

9月 27th, 2012 at 10:43 pm

Posted in PowerShell,SQL Server

Tagged with ,

PowerShell で BITS を使用して CUI でファイルをダウンロード

leave a comment

Windows Server 2012 でテキストから URL を取得してファイルのダウンロードをしたかったので作ってみました。

Read the rest of this entry »

Written by masayuki.ozawa

9月 27th, 2012 at 9:16 pm

PowerShell でイベントログを保存

leave a comment

以前、このような投稿をしました。
WMIC で イベントログをローテーション

今回は PowerShell でイベントログを保存してみたいと思います。

イベントログ関連のコマンドレットとしては以下のようなものがあります。

PS >get-command "*EventLog" | Format-Table name

Name
—-
Clear-EventLog
Get-EventLog
Limit-EventLog
New-EventLog
Remove-EventLog
Show-EventLog
Write-EventLog

イベントログの情報取得 (Get-EventLog) や、イベントログに情報出力 (New-EventLog) はあるのですが、イベントログを
evt 形式で保存するようなコマンドレットはないみたいなのですよね。
# Export-CSV でファイルにリダイレクトすることはできますが。

evt 形式でイベントログを保存するためには、WMI を使って BackupEventLog をコールする必要があるようです。
結果、WMIC と一緒になりますね。

以下のような PowerShell を実行する事でイベントログを取得し、evt 形式でファイルに保存することが可能です。
# backupeventlog は既にファイルが存在していると保存されないため、Test-Path でファイルの存在確認をして
  ファイルが存在している場合は削除しています。

$LogDir = "C:temp"
$EventLog = Get-WmiObject win32_nteventlogfile
foreach ($Log in $EventLog){
    $Log.PSBase.Scope.Options.EnablePrivileges = $true
    $EvtFile = $Log.LogfileName + "_" + (Get-Date).ToString("yyyyMMddHHmm") + ".evt"
    if((Test-Path ($LogDir + "" + $EvtFile)) -eq $true) {
        Remove-Item ($LogDir + "" + $EvtFile)
    }
    $Log.backupeventlog($LogDir + "" + $EvtFile)
}

ポイントとしては、

  1. [PSBase.Scope.Options.EnablePrivileges = $true] を設定する
  2. [Security] のログは、[管理者グループ (Administrators) かつ、[管理者として実行]] していないと取得できない

というところかと。

EnablePrivileges を設定しないで [BackupEventLog] をコールすると [アクセスが拒否されました] というエラーになることがあります。
# Windows Server 2003 だと現象が発生したのですが、Windows 7 だと発生しませんでした…。

この辺りに関しては以下の情報が参考になります。
Vista – Win32_NTEventLogFile BackupEventLog: Access denied
WMI による Windows の管理

Security のログは通常のイベントビューアーでも Administrators しか表示することができないのですが、PowerShell で
Security のログを操作するときは Administrators かつ、管理者として実行する必要があります。

セキュリティログに関しては、以下の情報が分かりやすいかと。
サーバー管理者のためのイベントログ運用の基本

Administrators グループのユーザーで管理者として実行していない場合の [Get-WmiObject win32_nteventlogfile] の実行結果がこちらです。

Get-WmiObject win32_nteventlogfile | Format-Table LogfileName

LogfileName
———–
Application
HardwareEvents
Internet Explorer
Key Management Service
Media Center
ODiag
OSession
System
Windows PowerShell

管理者として実行した結果がこちらになります。

Get-WmiObject win32_nteventlogfile | Format-Table LogfileName

LogfileName
———–
Application
HardwareEvents
Internet Explorer
Key Management Service
Media Center
ODiag
OSession
Security
System
Windows PowerShell

[Security] が取得できているのが確認できますね。

 

この辺の情報はお客様先で障害があったときに使用する事がありますのでバッチで簡単に EVT 形式のファイルに保存できると
問い合わせがあったときに情報を取得してもらうのが楽にできてよいですね。

Written by masayuki.ozawa

8月 12th, 2010 at 2:50 pm

Posted in PowerShell

PowerShell で Twitter のタイムラインを取得

leave a comment

PowerShell の勉強がてら、インターネット上で公開されている内容をつぎはぎしながら作ってみました。
エラートラップ一切なしでシーケンシャルに実行。

うん、Developer から ITPro になって良かったと思います(笑)

$RequestUrl = "http://api.twitter.com/1/statuses/home_timeline.xml?count=10"

$Request = [System.Net.WebRequest]::Create($RequestUrl)
$Request.Credentials = Get-Credential
# $Username = ""
# $Password = ""
# $Request.Credentials = new-object System.Net.NetworkCredential($Username,$Password)

$response = $Request.GetResponse()
$reader = new-object System.IO.StreamReader($response.GetResponseStream())

$returnvalue = $reader.ReadToEnd()
$reader.Close()
$Ary = @()

foreach ($child in $returnvalue.statuses.ChildNodes | Sort-Object created_at)
{
    $DateAry = $child.created_at.ToString().Split(" ")   
    $Date = $DateAry[3] -as [DateTime]
    $Ary += (($Date.AddHours(9)).ToString("yyyy/MM/dd HH:mm:ss") + "  " + `
    "[@" +$child.User.screen_name + "] " + $child.text).ToString()  
}

$Ary | Out-GridView

PowerShell をもっと基礎から勉強しないと駄目だな~。

Written by masayuki.ozawa

8月 12th, 2010 at 1:58 pm

Posted in PowerShell