この記事では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
コメント