スクリプトの実行許可

  • 管理者権限で PowerShell を起動し、Set-ExecutionPolicy コマンドレットで設定する。
    すべてを展開すべてを収束
      1
    
     
    
    > Set-ExecutionPolicy RemoteSigned
  • Visual Studio の外部ツールとして PowerShell を起動する場合は、x86 版の PowerShell についてスクリプトの実行許可を設定しておく。
    %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

起動設定

  • 「プロファイル」に設定を記述しておくことで、起動時にモジュール登録等を自動的に行える。
  • プロファイルの場所の確認
    すべてを展開すべてを収束
      1
    
     
    
    > $profile
  • プロファイルの再適用
    すべてを展開すべてを収束
      1
    
     
    
    > . $profile
  • サンプル Microsoft.PowerShell_profile.ps1
    すべてを展開すべてを収束
      1
      2
    
     
     
    
    $currentDir = Split-Path $MyInvocation.MyCommand.Path
    Import-Module (Join-Path $currentDir "Get-NetworkStatistics.psm1")

TCP/UDP ポートを使用しているプロセスをリストアップ

  • filecheckUsingPort.zip
    すべてを展開すべてを収束
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
    
     
     
     
     
    -
    |
    !
     
     
     
     
     
     
     
    -
    |
    -
    |
    |
    |
    -
    |
    !
    |
    |
    !
    !
     
    -
    |
    -
    |
    |
    !
    !
     
     
    
    # TCP/UDP ポートを使用しているプロセスをリストアップする。
    # Get-NetTCPConnection 不使用
     
    $running_proc = @{}
    foreach( $proc in Get-Process ){
        $running_proc[ $proc.Id ] = $proc.ProcessName
    }
     
    $re = "^\s*(?<proto>\S+)\s+(?<lhost>\S+):(?<lport>[^:\s]+)\s+"
    $re += "(?<rhost>\S+):(?<rport>[^:\s]+)\s+(?<stat>\S*)\s+(?<pid>\d+)$"
    $regex = [regex] $re
     
    $using_ports = @{}
    $ports = netstat -ao | Select-String "TCP|UDP"
    foreach( $line in $ports ){
        $m = $regex.Matches( $line )
        if ( $m[0].Success ){
            $id = 0
            [void][int]::TryParse( $m[0].Groups["pid"].Value, [ref]$id )
            $name = $running_proc[ $id ] + " (PID: " + $id + ")"
            if ( ! $using_ports[ $name ] ){
                $using_ports[ $name ] = @{}
            }
            $port = $m[0].Groups["proto"].Value + "/" + $m[0].Groups["lport"].Value
            $using_ports[ $name ][ $port ] = $m[0].Groups["stat"].Value
        }
    }
     
    foreach( $name in ( $using_ports.Keys | sort ) ){
        write-host "${name}"
        foreach( $port in ( $using_ports[ $name ].Keys | sort ) ){
            $status = $using_ports[ $name ][ $port ]
            write-host "`t${port}`t${status}"
        }
    }
     
    # EOF
    

システム情報の表示

イベントログ

  • イベントログを記録するには事前にイベントソースを登録しておく必要がある。
  • 登録済みのイベントソースを全てリストアップ。(Application, 管理者権限不要)
    すべてを展開すべてを収束
      1
      2
    
     
     
    
    Get-ChildItem HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\Application |
      Select-Object PSChildName
  • 登録済みのイベントソースで「v」から始まる名前のものをリストアップ。
    すべてを展開すべてを収束
      1
      2
      3
    
     
     
     
    
    Get-ChildItem HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\Application |
      ?{ $_.PSChildName.ToLower().StartsWith("v")} |
      Select-Object PSChildName
  • 新規イベントソース登録 (要管理者権限)
    すべてを展開すべてを収束
      1
    
     
    
    New-EventLog -Source "MyApp1" -LogName "Application"
  • イベントソース削除 (要管理者権限)
    すべてを展開すべてを収束
      1
    
     
    
    Remove-EventLog -Source "MyApp1"

添付ファイル: filecheckUsingPort.zip 236件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Wed, 02 Aug 2017 18:25:50 JST (114d)