Windows OSの運用に関わる現状把握用コマンド一覧

OS(Desktop,Server)

この記事ではWindows OSの状態を監視するためのコマンド一覧を作成します。各コマンドを実行して日々取得した値は前回と比較することでWindows設定パラメータを変更したか監視する対象として扱うことができます。

リモートデスクトップ(サーバー側)

接続許可の現在状態の確認

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections"

0:接続許可、 1:接続許可しない

認証レベル接続許可の現在状態の確認

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication"

0:ユーザ認証OKのコンピューターから全て接続許可、1:ネットワークレベル認証でリモートデスクトップを実行しているコンピューターからのみ接続を許可 (推奨)

FirewallのInboundルールの現在状態の確認

Get-NetFirewallRule | Where-Object Name -like 'RemoteDesktop*' | Out-String -Stream | Select-String "^Name","Enabled"

RemoteDesktop-In-TCP-WS
RemoteDesktop-In-TCP-WSS
RemoteDesktop-Shadow-In-TCP
RemoteDesktop-UserMode-In-TCP
RemoteDesktop-UserMode-In-UDP

Ping 応答

ICMP Echo Reply現在状態の確認

Get-NetFirewallRule | Where-Object Name -Like 'ICMPv4'

情報なし:許可しない、情報あり:許可

ローカルユーザー/グループの状態確認

ローカルユーザーの一覧取得

Get-LocalUser

ローカルグループの一覧取得

Get-LocalGroup

指定したグループに属するユーザ一の一覧取得

Get-LocalGroupMember -Group "Administrator"

ローカルグループに属するユーザー一覧を取得

グループ名を必ず表示し、メンバーがいない場合には「No Members」と表示

# Get all local groups
$localGroups = Get-LocalGroup

# Initialize an array to store the results
$results = @()

# Loop through each group and get their members
foreach ($group in $localGroups) {
    $groupName = $group.Name
    $groupMembers = Get-LocalGroupMember -Group $groupName

    if ($groupMembers.Count -eq 0) {
        # If there are no members, add the group with "No Members"
        $results += [PSCustomObject]@{
            GroupName = $groupName
            UserName  = "No Members"
        }
    } else {
        # If there are members, add each member to the results array
        foreach ($member in $groupMembers) {
            $results += [PSCustomObject]@{
                GroupName = $groupName
                UserName  = $member.Name
            }
        }
    }
}

# Display the results
$results | Format-Table -AutoSize

TODO

タイトルとURLをコピーしました