足るログ

片言語学力で海外生活中

リモートデスクトップできるユーザーを確認したい

f:id:zakk310:20170214234635j:plain

リモートデスクトップは、手元になくてもネットワーク経由で他のPCにログイン出来る手軽で便利な機能。利用する前には、リモートデスクトップのグループに登録しておく必要があります。

例えば、1台共有PCを準備して複数人をリモートデスクトップのグループに登録しておけば同時ログインできませんが、皆でそのPCが利用できるようになります。

コマンドプロンプトリモートデスクトップのユーザーを取得する

そんな中の共有PCの1台にどんどんユーザー数を増やし続け、管理のために登録ユーザーのリストが欲しいとなった。

登録は出来てもユーザー情報をエクスポートする機能がないので困ったことになった。スクリーンショットを張り付ける…というのはスマートじゃないですよね。

お手軽なのは、該当PCにログインしてコマンドプロンプトで以下のコマンドを実行すると登録されているユーザーが表示されるのでコピペすればいい。

net localgroup "remote desktop users"

Powershellリモートデスクトップのユーザーを取得する

Powershellは、Windowsで使えるスクリプト言語コマンドプロンプトより更に面倒なことが扱えるイイやつ。人気は全くない。

コマンドプロンプトでは該当PCにログインしないといけませんが、以下のPowershellを実行するとログインせずに取得できるので複数台のリモートデスクトップのユーザーを取得したいときには更に便利です。

取得したいPC名を"my-pc"の中に入力して実行します。

$target = "my-pc"
foreach ($strcomputer in $target) {Get-WMIObject Win32_Group -computername $strcomputer -filter "domain='$strComputer'" | %{
  $computer = [ADSI]("WinNT://" + $strComputer + ",computer") 
  $Group = $computer.psbase.children.find($_.name) 
  $members= $Group.psbase.invoke("Members") | %{
    $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)
  }
  if($_.name -eq "Remote Desktop Users")
  {Write-Host "<" $_.name "Group >",Hostname:$target -ForegroundColor Yellow
  $members}
  }
}

f:id:zakk310:20170214233131p:plain

アドミニストレータ権限が必要とか、グループポリシーとかAD環境とか環境の違いによってエラーメッセージが表示されるかもしれません。そのときはご了承くださいませ。

スクリーンショットのPCは、Home版なのでリモートデスクトップ機能自体がないためエラーメッセージが表示されたと思われます。