Windows PowerShell

イベントログからログオンとログオフの時刻を確認

イベントログからログオンとログオフの時刻を確認するコマンドを作成しました。 get-eventlog -logname security | where {($_.eventID -eq 4647) -or ($_.eventID -eq 4624 -and $_.message -match "\s*?ログオン タイプ:\s*2\s*?")} | moreイベントログの…

図形の表示

出典: フリー百科事典『ウィキペディア(Wikipedia)』 シェルピンスキーのギャスケット - Wikipedia この図形を表示するスクリプトを作成しました。 作成方法はまず、一次元配列を作成します。要素の値は基本的に「0」に設定しますが、真ん中に一つ「1」を…

クリップボードを取得するコマンドレット

PowerShell Community Extensions(PSCX)をインストールすると便利なコマンドレットを使えるようになります。 PowerShell Community Extensions この中で、get-clipboardというコマンドレットを使用してみました。 Excelファイルを開き、列を選択します。 Pow…

起動しているウィンドウを表示する

起動しているウィンドウの名前を表示させてみました。(エクスプローラ以外) get-process | % {if ($_.mainwindowhandle -ne 0) {$_.mainwindowtitle}} エクスプローラのウィンドウを表示させるにはshell.applicationオブジェクトを使用します。 今回は開いて…

WindowsUpdateの更新可能なプログラムを検索する

WindowsUpdateの更新可能なプログラムを検索するスクリプトを作成しました。 Function ComRelease{ param($obj); if ($obj -ne $null ){ while([System.Runtime.InteropServices.Marshal]::ReleaseComObject($obj) -gt 0){} } } $sch = new-object -com Micr…

イベントログを監視する

イベントログを監視するスクリプトを作成しました。実行すると、3秒置きにイベントログをチェックし、新しいイベントが発生した場合は画面に表示します。 $log_name = "application"; $index = ($ev = get-EventLog -log $log_name -newest 1).index do{ $di…

カレンダーを表示する

カレンダーを表示するスクリプトを作成しました。 $ca +="`n" $today = get-Date; $header = "*" + [string]$today.Year + "." + [string]$today.Month + "`n"; $ca += $header; $ca += "Su Mo Tu We Th Fr Sa `n"; $date = Get-Date -Day 1; switch ($date.…

2つのハッシュのキーを比較して、存在しないものを抽出

2つのハッシュのキーを比較して、存在しないものを抽出する関数を作成しました。 具体例としては、以下のHash1とHash2というハッシュに対してHash1に存在しないものを抽出する場合、緑の部分を抽出します。 Hash1Hash2 キー値キー値 one1zero0 two2one1 thre…

テキストファイルの行の値をユニークな値になるようにする

テキストファイルの行の値をユニークな値になるようにする関数を作成しました。 下記が関数の内容です。 Function GetUniqueValue{ param([string]$fpath) $result = new-Object system.Collections.ArrayList get-Content $fpath | foreach-Object{ if (!$r…

ハッシュの値を加算・減算する関数を作成する

ハッシュの値を加算・減算する関数を作成しました。 具体例としては、以下のH1とH2というハッシュに対して加算する場合、緑の部分を加算します。 H1H2 キー値キー値 one11zero0 two12one1 three13two2 four14three3 そして、結果は次のようなハッシュを返し…

Microsoftのセキュリティパッチをダウンロードする

Microsoftのセキュリティパッチをダウンロードするスクリプトを作成しました。テキストファイルにダウンロードしたいセキュリティパッチのファイル名を記載しておき、スクリプトを実行します。すると、テキストファイルと同じフォルダにファイルがダウンロー…

PowerShellのショートカットを作成する

ショートカットを作成したいPowerShellのファイル(.ps1)を選択します。 右クリックをしながらショートカットを作成したい個所にドロップします。 右クリックを離し、ショートカットをここに作成をクリックします。 ショートカットのアイコンが作成されます。…

ショートカットを作成する

ショートカットを作成するスクリプトを書きました。 try{ # スクリプトが存在するディレクトリを取得 $base = split-Path -Parent $MyInvocation.MyCommand.Path; # 拡張子が「.lnk」のファイルをすべて削除 remove-item "$base`\*.lnk" # 「link.txt」を読…

指定したセル範囲の文字列を配列で出力する

指定したセル範囲の文字列を配列で出力するシェルを作成しました。引数にexcelファイル名とセルの範囲(例:"A1:C23"←この場合はA1セルからC23セル)を指定します。 すると、セル内の文字列を配列で返します。 function getcells{ param($fpath, $hanni); $exc…

yahooのニューストピックの名前を正規表現で取得する

PowerShellは.Net.Frameworkのクラスを使用することが出来ます。.Net.FrameworkはWebアプリケーション作成ためのモジュールがそろっています。Webに関してはいろいろと操作が出来るという事です。system.Net.webclientクラスはインターネットの各リソースと…

WMIオブジェクトのプロパティの値を取得する(その2)

WMIオブジェクトのプロパティをいちいち確認するのがめんどくさいので、get-memberで"property"だったら"name"と値を表示するというようなシェルを作成しました。が、しかし、もっと単純に出来ることが判明。 Get-WmiObject -query "select * from Win32_Ope…

WMIオブジェクトのプロパティの値を取得する

WMIでシェルを作ろうとするとまず問題なのが情報の少なさです。クラスの説明は英語のMSDNのサイトにはあります。しかし、クラス名自体を知らない場合は少しやっかいです。その場合は、クラス名であたりつける作戦を行います。WMIクラスの一覧は以下のコマン…

インストールされたHotFixのプログラムを検索する

Windowsのパッチの検索で、win32_QuickFixEngineeringというWMIのクラスをみつけました。このクラスはインストール済みHotFixの情報をもっています。以下サイトにもあるように実際にインストールされている修正プログラムを見逃す場合があるそうです。 Hey, …

指定したディレクトリのExcelのファイル名とシート名を表示する

フォルダ名はその配下のファイル・フォルダの内容を要約した名前に設定することが多いと思います。同じようにファイル名はそのファイルの内容を示していることが多いです。つまり、フォルダ名やファイル名をdirコマンドなどで列挙すると目次としての役割を果…

プロセスの優先度を変える

アプリケーションの速度はハード的なものに依存すると思います。アプリケーションはどんどん重くなってきているので、CPU、メモリ等をそのまま使っていると速度は遅くなります。また、起動しているプログラムの量が増えると限られたリソースの中で分散しなけ…

更新履歴からパッチを検索する

Windowsのセキュリティパッチをあてた際に、ちゃんとあたっているか確認するスクリプトがあったらいいと思います。バッチ番号を指定すると適用済みか未適用か判断させるようなプログラムです。コントロールパネルのインストールされた更新プログラムを直接取…

時刻同期

Windowsを使っていて、パフォーマンスやセキュリティを気にする時、起動サービスはできるだけ少ないほうが良いと思います。時刻同期を行うサービスはその一つです。W32timeは時刻の同期を維持する機能があります。しかし、時刻のずれをそんなに意識しない場…

イベントログにエラーを書き込む

PowerShellの実行を記録に残して起きたい時があるかもしれません。記録する内容として考えられるのはプログラムの 1.実行日時 2.名前 3.説明 4.実行結果 実際にログを参照する機会はエラーが発生した時が多いと思います。そのため、イベントログに1…

Webページのリンクを正規表現で検索

私がニュースサイトを見るとき、どのような行動をとるか考えてみました。 1.ブラウザを開く 2.ニュースサイトに移動する 3.トピックの題名を見る 4.気になったものがあればクリックして読む さて、この中で自動化できるものはないか考えてみました。…

Webページのソースを表示する

Webページのソースを表示するプログラムを作成しました。ウェブページのソースを表示する為にwebclientオブジェクトを使用しました。実際にデータを読み取る際にはwebclientのOpenReadメソッドでConnectStreamというオブジェクトを取得し、それをStreamReade…

正規表現の後方参照

2009/11/26 23:31 Users 2009/12/23 21:58 logs このような文字列があり、「2009/11/26」、「2009/12/23」、「Users」、「logs」のみを抽出したい場合は後方参照を使う事が可能です。パターン内の抽出するメタキャラクタを()で囲みます。()で囲まれたメタキ…

正規表現の最短一致

次のような文字列がった場合、正規表現で「C.*\\」と指定すると何がマッチするのでしょうか? C:\Users\sinpay\test のディレクトリ 「.」は任意の一文字で、「*」0回以上の繰り返しです。そうすると、次のような候補が考えられます。 No.1C:\ No.2C:\Users\…

テキストファイルの改行コードをCR+LFをLFに変換する

テキストファイルの改行コードをCR+LFをLFに変換してみました。変換方法は-replace演算子を使用します。-replace演算子は正規表現のパターン文字列を特定の文字列に変換できます。CR+LFは正規表現でいうと「\x0d\x0a」です。また、Powershellでは「`r`n」(`r…

テキストファイルのデータを並べ替える

テキストファイルからデータを取得し、並べ替えてファイルに出力してみました。まず、テキストファイルからデータを取得することに関してですが、Select-stringコマンドレットを使用しました。Select-stringコマンドレットはunixでいうgrep みたいな機能を持…

イベントログ取得の実行時間を表示

イベントログ実行時間を表示してみたいと思います。実行時間の測定はmeasure-commandコマンドレッドが使えます。measure-commandはスクリプト ブロックとコマンドレットの実行にかかる時間を計測します。例えばlsコマンドの実行時間は以下のようになります。…