2017-01-25 11 views
1

私が達成しようとしていることをまず説明します。ログオン、ログオフスクリプトはPowerShellを使用して解析します

プロジェクトでは、PCのパイロットグループを監視する必要があります。そして彼らは、以下の情報を知りたい:ユーザーごとの各セッションの

  • 時間に
  • 合計ログに記録

    • 総ユニークユーザー

    をだから私は先に行って、作成されましたログオンスクリプトとログオフスクリプト。これらのスクリプトの出力は毎月txtファイルです。例えば

    01-2017.txtファイル含まれています

    25-01-2017,09:29,lky9,WS257737,Logon 
    
    25-01-2017,10:37,lky9,WS257737,Logoff 
    
    25-01-2017,10:01,1f57,WS157954,Logon 
    
    25-01-2017,10:29,7df6,WS248751,Logon 
    
    25-01-2017,10:34,7df6,WS248751,Logoff 
    
    25-01-2017,10:48,1f57,WS157954,Logoff 
    

    は、今私は(unsuccesfully)Get-Contentと、配列内のこのすべてを取得しようとしています。私がこれを達成することができたら、私はさらに試みることができます。 PowerShellのスキルはまだ非常に悪いですが、私は大丈夫アレイを管理することができます。だから質問はです。

    誰も私が配列でこれを得る方法を教えてもらえますか?あなたが必要なもの

  • +1

    http://stackoverflow.com/help/mcve –

    答えて

    0

    が、これはあなたのオブジェクトの配列としてのすべてのレコードを与えるので、Import-CSVコマンドレットを使用してCSVをインポートすることです:

    $logList = Import-Csv -Path "Path_to_01-2017.txt" -Header @('Date', 'Time', 'User', 'PC', 'Type') 
    

    出力:

    Date : 25-01-2017 
    Time : 09:29 
    User : lky9 
    PC : WS257737 
    Type : Logon 
    
    Date : 25-01-2017 
    Time : 10:37 
    User : lky9 
    PC : WS257737 
    Type : Logoff 
    
    Date : 25-01-2017 
    Time : 10:01 
    User : 1f57 
    PC : WS157954 
    Type : Logon 
    
    Date : 25-01-2017 
    Time : 10:29 
    User : 7df6 
    PC : WS248751 
    Type : Logon 
    
    Date : 25-01-2017 
    Time : 10:34 
    User : 7df6 
    PC : WS248751 
    Type : Logoff 
    
    Date : 25-01-2017 
    Time : 10:48 
    User : 1f57 
    PC : WS157954 
    Type : Logoff 
    

    例どのようにこれを使用して質問にお答えします:

    #total unique users that logged on 
    $logList.User | select -Unique | Measure | select -ExpandProperty Count 
    
    #Total log on 
    $logList | where Type -eq LogOn | Measure | select -ExpandProperty Count 
    
    #Time of each session per user 
    # This is a bit tricky so I leave that up to you :p 
    
    +1

    おはよう、ありがとう!インポート-CSVとTXTを組み合わせて使用​​できることを学びました。これは間違いなく便利になるでしょう。 – Sander

    0

    私はまったく異なるアプローチをとっています。イベントビューアはログオン&のログオフタイムスタンプとユーザーIDを保持しています(ユーザーのIDだと思います)。その後、予期しない再起動を追跡するだけで、その時点までのログオンイベントしか持たないセッションのカットオフポイントを確認することができます。

    これで、スケジュールされたタスクなどでいつでもスクリプトを実行できます。ログオン/ログオフ中に実行する必要はなく、おそらくログオン時間に影響します。

    関連する問題