PowerShell Edgeのプロファイルアカウントを調べる方法
これを書いているのは2024年2月なんですけども最近アカウントを管理するサービスの売り込みが激しいです。中小企業の弊社にも電話が掛かってきます。商品名を出すと「ジョーシス」「Admina」とかです。これらのサービスでは社員が勝手に使っているシャドーITの個人アカウントも分かるそうなんですが、仕組みを聞いても教えてくれませんでした。
どうやるんだろう、MicrosoftEdgeのアカウントだけでも収集できたらなぁとモヤモヤしてたんですが、やってみたらできました。
Microsoft Edge のプロファイルアカウントを調べる方法①
ブラウザのURL欄に次のように打ち込む
edge://profile-internals/
プロファイル情報は最初畳んだ状態で表示されています。
これをクリックして開くと
このようにプロファイル名やMicrosoftEdgeアカウントであるUserNameなどが表示されています。
これらの操作をPowerShellを使ってブラウザ非表示のスクレイピング処理すればアカウントの収集ができる。
と、思ったんですが、非力なパソコンだと収集している間、遅くなってしまいます。職場には第6世代Corei3+HDD+4GBのパソコンもあるので厳しいです。
そして次の方法
Microsoft Edge のプロファイルアカウントを調べる方法②
ProfilePathの中を見ていたらアカウント名が書いてあるJSONファイルを見つけました。
ここです
"C:\Users\[ユーザー]\AppData\Local\Microsoft\Edge\User Data\Local State"
これを解析してアカウント名を取り出します。
$edgedata = Get-Content -Encoding UTF8 -Path $env:LOCALAPPDATA"\Microsoft\Edge\User Data\Local State" | ConvertFrom-Json
$edgedata.profile.info_cache.Default.user_name
$edgedata.profile.info_cache.Default.gaia_name
$env:LOCALAPPDATAは環境変数でAppDataまでのパスになっています。
デフォルトアカウント以外のすべてのアカウントを取得するには
$edgedata = Get-Content -Encoding UTF8 -Path $env:LOCALAPPDATA"\Microsoft\Edge\User Data\Local State" | ConvertFrom-Json
foreach($i in $edgedata.profile.profiles_order){
$edgedata.profile.info_cache.$i.user_name
$edgedata.profile.info_cache.$i.gaia_name
}
JSONとして処理するのではなく、文字処理(正規表現)で抽出するには
$edgedata = Get-Content -Encoding UTF8 -Path $env:LOCALAPPDATA"\Microsoft\Edge\User Data\Local State"
[RegEx]::Matches($edgedata,'"user_name":"(.*?)@(.*?)"').value
処理は見にくいけど↑こっちの方が早く処理できてる気がします。
Google Crhomeのプロファイルアカウントの取得方法はこちら
#アカウント管理 #MicrosoftEdge #ブラウザ #プログラミング #ジョーシス #Admina #PowerShell #Edge #プロファイル #毎日投稿