Windows

コマンドメモ

プロセス情報

wmic process [where "(条件式)" ] [get <列名>[,<列名>] ...]

CSV形式のフォーマットで出力する

wmic process LIST /format:CSV

メモリサイズが20MB以上のプロセス名とサイズを表示

wmic process where "(workingsetsize > 20000000)" get name,workingsetsize
※CreationDate列はプロセスの起動時間

パフォーマンスカウンタ

typeperf "オブジェクト名" [オブジェクト名...] -si 間隔 -sc 回数 -f <CSV|TSV|BIN|SQL> -o 出力ファイル名

-- CPU使用率とメモリ使用量を1秒毎に表示
typeperf "\Processor Information(_Total)\% Processor Time" "\Memory\Committed Bytes" -si 1
-- オブジェクト一覧取得
typeperf -qx
-- バイナリファイルの変換
relog <カウンタログ> -f csv -o <出力ファイル名>

セッション操作

quser     ※ ログインしてるユーザー、ステータス、アイドル時間
query session ※ ログインしてるセッション数確認
reset session ※ セッション切断
-- リモートのセッション状況を確認
qwinsta /server:<接続先ホスト名>

-- リモートのセッションをログオフする
logoff <SID> /server:<接続先ホスト名> /v
-- 最大ユーザー数、最大オープンファイル数、アイドルセッションタイムの確認
net config server

ユーザー情報

net user ユーザーID /domain
※ /domain を付与すると、ドメインコントローラーのユーザー情報を取得

インストール情報

-- インストールソフト一覧
wmic product get name /value

-- 役割・機能一覧
servermanagercmd -query

サービス一覧表示

sc query (起動のみ)
sc query state= all (起動停止全部)
sc query state= inactive (停止のみ)

ディレクトリのファイル一覧

dir C:\ /S /-C | findstr /V "<DIR>" >> C_drive_dir.txt

イベントログをコマンドでエクスポートする

イベントビューアから、カスタムビューにてログフィルタを作成し、プロパティのXMLタブ Selct Path〜要素の中をコピペする。

(例) 24時間(86400秒)以内にログイン/ログオフしたユーザーをセキュリティログから取得する(上はテキスト形式で出力、下はバイナリ形式で出力)

wevtutil qe Security /f:text /q:"*[System[(EventID=4624 or EventID=4634) and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
wevtutil export-log Security Security.evtx /q:"*[System[(EventID=4624 or EventID=4634) and TimeCreated[timediff(@SystemTime) <= 86400000]]]"

認識してないデバイスを表示する

set devmgr_show_nonpresent_devices=1
start devmgmt.msc

文字列を検索する

findstr

makecab(ファイルの分割)

conf.txt ファイルを作成し以下のパラメータを記述する
------------------------------------
.Set CabinetNameTemplate=file*.cab ;
.Set MaxDiskSize=52428800 ;
.Set Cabinet=on ;
.Set Compress=off ;
.Set DiskDirectoryTemplate= ;
分割対象ファイルのフルパス
------------------------------------
makecab /F conf.txt
※ MaxDiskSize(512byteの倍数である必要あり)で指定したサイズ毎に分割される。


 

コマンドレット

Format-XXX

出力結果のフォーマットを指定する

コマンド | { Format-List | Format-Table | Format-csv | Format-Custom }

export-csv

出力結果をCSV形式で保存する

コマンド | export-csv -encoding default -path C:\User.csv

Active Directory

  • ADに属するユーザーを確認
    -- DCに属する adminから始まるユーザーの全属性を C:\User.csv に保存する
    Get-ADUser -Filter {samAccountName -like "admin*"} -Properties *
    オプション説明
    -Filter表示対象を指定。指定は必須。*で全て表示。属性でフィルタ指定することも可能
    -Properties表示したいプロパティをカンマ区切りで列挙する。*で全て表示

グループポリシー

  • GPOの確認
    Get-GPO -All
  • 既定のGPOを元に戻す
    Dcgpofix.exe /Target:{ Domain | DC | BOTH }
  • セキュリティフィルター設定(Domain Usersグループに対して読み取り許可)
    Set-GPPermissions -Name "GPO-Name" -TargetName "Domain Users" -TargetType { Computer | User | Group } -PermissionLevel オプション
    オプション説明
    GpoApplyセキュリティフィルターの登録
    Noneセキュリティフィルターの削除
    GpoRead読み取りの委任
    GpoEdit編集の委任
    GpoEditDeleteModifySecurity編集、削除、セキュリティの変更を委任
  • GPOリンク
    New-GPLink -Name "GPO-Name" -Target "OU=Sales,DC=contoso,DC=com"
    Set-GPLink -Name "GPO-Name" -Target "OU=Sales,DC=contoso,DC=com" -LinkEnabled { Yes | No } -order 優先順位
  • 継承のブロック
    Set-GPInheritance -Target "OU=Sales,DC=contoso,DC=com" -IsBlocked Yes
  • GPO適用状況を出力
    Get-GPOReport -Name "GPO-Name" -ReportType HTML -Path フォルダ名
  • GPOバックアップ
    Backup-GPO -name "GPO-Name" -Path バックアップ先フォルダ名
  • GPO復元
    Restore-GPO -name "GPO-Name" -Path バックアップ先フォルダ名
  • GPOインポート
    New-GPO -name "GPO-Name" [-StarterGpoName スタートアップGPO名]
    Import-GPO -BackupGpoName バックアップしたGPO名 -TargetName インポート先のGPO名 -Path フォルダ名

     

MSFC(Microsoft Failover Cluster)

クラスター情報

cluster /prop
cluster node /prop
cluster group /prop
cluster res /prop
cluster res /priv
cluster net /prop
cluster netint /prop
cluster res /status
cluster group /status

クラスターログ

cluster log /g
C:\Windows\Cluster\Reports に出力された Cluster.log を取得(クラスターノード分取得)


Excel

時間操作

  • 時間に10秒を足す
    =対象セル + 10/24/60/60
    =TIME(HOUR(対象セル), MINUTE(対象セル),SECOND(対象セル) + 10)
  • 時間(HH:MM:SS)を秒にする
    =対象セル/(1/(24*60*60))
    書式を [ss] にする

文字列操作

  • 改行を別の文字列に置き換える
    =SUBSTITUTE(A1,CHAR(10),"改行後の文字")
  • ゼロパディング
    =RIGHT(値 + 10^2 , 2) 2桁のゼロパディング

値の取得

  • 最終行のセルの行番号を取得する (例) B2:B100の範囲で一番最後に文字が入ってる箇所の行番号を取得する場合
    =ROW(INDEX(B2:B1000,MATCH(10^17,CODE(B2:B1000))))
    と数式を記述し、Ctrl + Shift + Enter で配列数式で計算する。
    配列数式はB:Bのような範囲指定ができない。
    ※10^17=10の17乗
  • 数値分布の集計を行う(〜10、〜20、・・・、〜100 といった分布数を集計する時)
    基準となる範囲の右隣のセルを全て選択する。
    数式に =FREQUENCY(集計対象範囲,基準となる範囲) を入力する。
    集計対象範囲は、集計対象の数値が分散している列
    基準となる範囲は、分布数の基準値。10、20、30・・・100 といった分布数の範囲を選択。
    Ctrl + Shift + Enter で配列数式で計算する。
  • 特定の条件にマッチしたものをカウントする
    =COUNTIF(検索範囲,"=>"&セル)
    検索範囲の中で、セルに指定した数値以上のカウントを取得する。
    
    複数条件の場合は COUNTIFS / SUMIFS を使う。
    否定条件は、"<>free memory" というようにキーワードの前に<>を付与する
  • 条件に合致したキーワードの中で、最大値(最小値)を求める
    条件に一致したキーワードの平均はAVERAGEIFという関数があるが、MAX/MINはないので以下の方法を使う。
    C2〜C100 にバラバラにある複数のキーワードに紐付く、数値がF2〜F100にあるとする。
    B2セルに記載されたキーワードの中で最大値のものを算出する場合は以下の関数を使う。
    
    =MAX(IF($C$2:$C$100=$B2,$F$2:$F$100))
    で、CTRL+SHIFT+ENTERで配列数式で計算させる。

グラフ

  • 基準線を追加
    以下のようなセルでグラフを作成し、60 を基準線として表示させる。
    1月 100 60
    2月  50 60
    3月  25
    4月  88
    
    60 60 のグラフ種類を「散布図(直線)」に変更し、最小を1、最大2 にすることで、一直線になる。
  • 軸の数値を実際の値とは別の値に書き換える(飛び抜けた軸の値を省略する時に使う)
    軸のオプション表示形式で、ユーザー形式を選択。
    [=200]"1200";[=250]"1250";0
    
    200 の値は 1200、250の値は 1250 と表示される。[=100]"",#,##0 とした場合は 100の値が非表示になる。
    実際の軸の値が 1220 の時、値から 1000 マイナスし、220 の値にしてグラフを作成し、
    軸の項目だけ、0,50,100,150,1200,1250 のように表示すれば、220の値でも軸上は1200〜1250の間になる
  • 2つの時間軸を上下2段にして表示させる
    Data  Time 項目1 項目2
    09/01 15  AAAA  あああ
    09/01 16  BBBB  いいい
    
    の場合、データソースの選択 で 「横(項目)軸ラベル」の[編集]を押下。
    時間にしたいラベルを選択する。

ピボットテーブル

  • 日付をまとめて集計(グルーピング化)
    ピボットの日付を選択し、ピボットテーブルツール - 分析 - グループの選択 で集計単位を変更する
  • 前月と比較する
    比較したい値をドラッグ&ドロップで値フィールドに落とし2つ分表示させる
    2つめの値フィールドの値設定から「計算の種類」で「基準値との差分の比率」
    「基準フィールド」に日付、「基準アイテム」に前の値 を入力。
    日付フィールド単位で1つ前のセルとの比率が表示されるようになる。
  • フィールドの追加
    ピボットテーブル - 分析 - フィールド/アイテム/セット - 集計フィールド
    任意の計算式(金額*1.10とか)を使ったフィールドを追加できる
    削除も同じメニューから、追加ではなく削除で行う
  • 集計グループの作成
    カラーコピー用紙と、コピー用紙を合計した金額を「用紙」の項目として追加したい場合など
    追加したい項目の箇所で、ピボットテーブル - 分析 - フィールド/アイテム/セット - 集計アイテム
    ※ 集計対象の数値がグループ化されてると集計できないので、グループ解除を行う
    削除も同じメニューで、名前に削除したいアイテムを入力し削除

その他

  • INDEX/MATCHの使い方
    =VLOOKUP("A",C5:D8,2)
    =INDEX(C5:D8,MATCH("A",C5:C8),2)
    この二つは同じ意味
    違いは
    =INDEX(B5:D8,MATCH("A",C5:C8),1)
    とすることで、検索対象C列の左側B列から値を取得できる。
    また
    ここれは、取得する列を2,1で固定していますが
    =INDEX(D5:F8,MATCH("A",C5:C8),MATCH("B",D4:F4))
    のように、行、列をMATCH関数で検索することで、マトリックスな検索も出来ます。
  • CASE文のような処理を行う
    =CHOOSE((DATEDIF(Q6,NOW(),"D")>=0) + (DATEDIF(Q6,NOW(),"D")>=14) + (DATEDIF(Q6,NOW(),"D")>=30) + (DATEDIF(Q6,NOW(),"D")>=90),"1の時","2の時","3の時","4の時")
    引数1の値により、引数2以降の値を表示する。引数1が3だったら、引数4の値を表示する
    条件がTRUEの場合は、1 になる為、TRUEになる条件によって、表示する値を変えている
  • Excelのシート名をセルに表示
    =MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)
  • 改行コードを置換
    検索ボックスなどで「Ctrl+J」を押下。何も表示されないが改行の制御コードが入力されている

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-03-16 (木) 00:18:23 (14d)