見出し画像

PowerShell chromeのプロファイルアカウントを調べる方法

 これを書いているのは2024年2月なんですけども最近アカウントを管理するサービスの売り込みが激しいです。中小企業の弊社にも電話がよく掛かってきます。商品名を出すと「ジョーシス」「Admina」とかです。これらのサービスでは社員が勝手に使っている個人Googleアカウントなどの、いわゆるシャドーITも分かるそうなんですが、仕組みを聞いても教えてくれませんでした。
どうやるんだろう、GoogleChromeアカウントだけでも収集できたらなぁとモヤモヤしてたんですが、やってみたらできました。


google chrome のプロファイルアカウントを調べる方法①


 ブラウザのURL欄に次のように打ち込む
 
chrome://profile-internals/

プロファイル情報は畳んだ状態で表示されています。
これをクリックして開くと

このようにプロファイル名やGoogleアカウントであるUserNameなどが表示されています。
使用中のユーザー以外のすべてのユーザーが表示され取得することができます。

この操作をPowerShellを使ってブラウザ非表示のスクレイピング処理すればアカウントの収集ができる。
と、思ったんですが、非力なパソコンだと収集している間、遅くなってしまいます。うちには第6世代Corei3+HDD+4GBのパソコンもあるので厳しいです。
そして次の方法

google chrome のプロファイルアカウントを調べる方法②

ProfilePathの中を見ていたらアカウント名が書いてあるJSONファイルを見つけました。
ここです
"C:\Users\[ユーザー]\AppData\Local\Google\Chrome\User Data\Local State"

これを解析してアカウント名を取り出します。

$chromedata = Get-Content -Encoding UTF8 -Path $env:LOCALAPPDATA"\Google\Chrome\User Data\Local State" | ConvertFrom-Json
$chromedata.profile.info_cache.Default.user_name
$chromedata.profile.info_cache.Default.gaia_name

$env:LOCALAPPDATAは環境変数でAppDataまでのパスになっています。

デフォルトアカウント以外のすべてのアカウントを取得するには

$chromedata = Get-Content -Encoding UTF8 -Path $env:LOCALAPPDATA"\Google\Chrome\User Data\Local State" | ConvertFrom-Json
foreach($i in $chromedata.profile.profiles_order){
  $chromedata.profile.info_cache.$i.user_name
  $chromedata.profile.info_cache.$i.gaia_name
}


JSONとして処理するのではなく、文字処理(正規表現)で抽出するには

$chromedata = Get-Content -Encoding UTF8 -Path $env:LOCALAPPDATA"\Google\Chrome\User Data\Local State"
[RegEx]::Matches($chromedata,'"user_name":"(.*?)@(.*?)"').value.replace('"user_name":"',"").replace('"',"")

処理は見にくいけど↑こっちの方が早く処理できてる気がします。


#アカウント管理 #GoogleChrome #プログラミング #ジョーシス #Admina #PowerShell #IT資産管理


MicrosoftEdgeのプロファイルアカウントを調べる方法はこちら


いいなと思ったら応援しよう!