Macのインベトリ収集方法
Macを業務用で使用していますが、ソフトウエア資産管理上インベトリを収集したいのですが、データで収集できる方法教えてください。
iMac (21.5-inch Mid 2011), OS X Mountain Lion (10.8.5)
Apple サポート App および YouTube チャンネルのお知らせ
* iOS 向け Apple サポート App のバージョン 5.6 が公開されました。
* YouTube - Apple Japan チャンネルで有用なヒントや使い方を配信中です。
* iOS 向け Apple サポート App のバージョン 5.6 が公開されました。
* YouTube - Apple Japan チャンネルで有用なヒントや使い方を配信中です。
コミュニティでの投票について
コミュニティでの投票について解説した記事を公開しました。
コミュニティでの投票について解説した記事を公開しました。
Apple Account (Apple ID) の不正利用を確認する方法
Apple Account に関するよくある質問についてはこちらのページを、また不正利用を確認する方法についてはこちらのドキュメントをご参照ください。
Apple Account に関するよくある質問についてはこちらのページを、また不正利用を確認する方法についてはこちらのドキュメントをご参照ください。
Macを業務用で使用していますが、ソフトウエア資産管理上インベトリを収集したいのですが、データで収集できる方法教えてください。
iMac (21.5-inch Mid 2011), OS X Mountain Lion (10.8.5)
失礼致します。 『システム情報』のことでしょうか? → Mac に関する詳細情報を表示する
『システムレポート』を開いて、Software>Applicationsでインストールされているアプリケーションの一覧が表示されますよ。
失礼致します。 『システム情報』のことでしょうか? → Mac に関する詳細情報を表示する
『システムレポート』を開いて、Software>Applicationsでインストールされているアプリケーションの一覧が表示されますよ。
早速、回答ありがとうございます。
そこまでは、知っているのですが、データとして落として、Excel等で加工したいのですが?
Terminalで出来るようです。
度々、失礼致します。 私も初めて気づいたのですが、『システム情報』で表示されるアプリケーションの一覧はコピペできないですね。 すみません。 ファイルメニューから保存を実行しても、拡張子がspxのxmlファイルが作られてしまいます。 これをテキストエディットで開くことはできますが、Excelのスプレッドシートに読み込むには、かなり複雑な編集が必要そうなので、ちょっと簡単にはできないですね。 もう少し調べてみます。
システム情報の「保存」をしてできる
spxファイルを読み込んでみることを考えてみました。
spxは実体がplistなのでApplescriptで読み込んで加工できると思います。
(このスクリプトは/アプリケーション/ユーティリティー/AppleScript エディタ で使うことを想定しています。)
わたしも試しに作ってみましたが重いです。500appで数分でかかります。
さらにアプリケーション名に,が入っている場合に対応していません。
項目の追加は、ファイルとスクリプトを見比べて勘でやってください。
()部分は書き換えてください(2カ所)。ファイル指定は
AppleScript エディタのウインドウ上に
ファイルをドラッグすると適切に書かれるはずです。
tell application "System Events"
set out to ""
set p_list to property list file ("(ここにspxファイルを指定)")
repeat with i in property list items of p_list
--データをさがす
if value of property list item "_dataType" of i is "SPApplicationsDataType" then
set APPS to property list item "_items" of i
repeat with ii in property list items of APPS
--各項目を取得する部分
if exists value of property list item "_name" of ii then
set Aname to value of property list item "_name" of ii
else
set Aname to ""
end if
if exists value of property list item "version" of ii then
set Aversion to value of property list item "version" of ii
else
set Aversion to ""
end if
if exists value of property list item "runtime_environment" of ii then
set Are to value of property list item "runtime_environment" of ii
else
set Are to ""
end if
if exists value of property list item "path" of ii then
set Apath to value of property list item "path" of ii
else
set Apath to ""
end if
--変数に突っ込んで、
set out to out & Aname & "," & Aversion & "," & Are & "," & Apath & "
"
end repeat
end if
end repeat
do shell script "/bin/echo " & quoted form of out & " > " & quoted form of "(ここに出力先(csv)を指定(上書きします。存在しない名前を指定してください。))"
end tell
ありがとうございました。なんとかデータは収集できました。
もうちょっと軽いやつを作ってみました。システム情報を直接読むので xxx.spx は不要。動作確認は Snow Leopard です。Lion 以降で動くかちょっと心配...
on run set str1 to "出力ファイル" set str2 to "アプリケーション一覧.txt" try set mac_path to choose file name with prompt str1 default name str2 set pos_path to POSIX path of mac_path my parse_spx(pos_path) on error err_msg return err_msg end try end run on parse_spx(pos_path) set pos_path to quoted form of pos_path set code to quoted form of " import plistlib import subprocess cmd = ['system_profiler', '-xml', 'SPApplicationsDataType'] pipe = subprocess.PIPE proc = subprocess.Popen(cmd, stdout = pipe).communicate()[0] plst = plistlib.readPlistFromString(proc) for e in plst[0]['_items']: try: e1 = e['_name'].encode('utf8') except: e1 = 'none' try: e2 = e['version'].encode('utf8') except: e2 = 'none' try: e3 = e['runtime_environment'].encode('utf8') except: e3 = 'none' try: e4 = e['path'].encode('utf8') except: e4 = 'none' print e1,'\\t',e2,'\\t',e3,'\\t',e4 " do shell script "python -c " & code & " 2>/dev/null > " & pos_path end parse_spx
追記: 書き出しはタブ区切りです
Macのインベトリ収集方法