Program inventering

Tråden skapades och har fått 29 svar. Det senaste inlägget skrevs .
1

Hejsan,
jag håller på att göra en liten inventering på våra maskiner och skrev ett litet shellscript som listade allt som jag hade i min Applications mapp, bara väldigt basic.

ls /Applications

men så slog det mig att det finns ju faktiskt system profiler i macen där allt står.
jag fick ut informationen till XML och den filen är ju jätte kul att leka med, speciellt om man har bra kunskaper i applescipt och xml.

jag har googlat runt världen för att hitta något sett att få ut informationen som jag vill ha och hittat lite små grejjer som kan funka men inget klockrent.

det jag vill göra är att ta informationen på clienten och skicka det till ett excel ark eller liknande för att kunna se hur mycket av varje jag har installerat.

men min kunskap räcker inte så långt så jag kan klara det, så min fråga till er är om det är någon som har någon ide på vad man kan göra på ngt lätt sett eller om det finns något bra inventerings system för mac.

tack på förhand

  • Medlem
  • 2009-09-17 11:07

Det finns program som
JAMF Software: Client Management Software for Macintosh Professionals
men det är mera för skolor, stora företag.

Det du skriver kan du ju skicka ut det kommandot med Remote Desktop
och få alla klienters programmappar.

Problemet med att inventera program är att man vill ha med licensnr
och vad jag vet är det ingen programvara som klarar av att inventera detta.

Ursprungligen av ML:

Det finns program som
JAMF Software: Client Management Software for Macintosh Professionals
men det är mera för skolor, stora företag.

Det du skriver kan du ju skicka ut det kommandot med Remote Desktop
och få alla klienters programmappar.

Problemet med att inventera program är att man vill ha med licensnr
och vad jag vet är det ingen programvara som klarar av att inventera detta.

ja jag har kollat på Jamfs lösningar, och jag har 400 datorera att inventera bara det att jag fick reda på detta lite sent och ska vara klar om 3 veckor så jag försökte hitta en lösning som kan göra det så länge. jag körde

whoami och ls /Applications

i remote desktop men mitt problem är att få ut en bra sökbar lista på dom olika programmen. jag drog in det i excel men det blir fel i tabellerna så jag kan inte sortera ut det till någon vettig data.

tack för ditt svar.

  • Medlem
  • 2009-09-19 11:19

Hur ser datan du får ut ut?

Ursprungligen av Baron:

Hur ser datan du får ut ut?

Såhär:
Datornmn
Användare
Program
Adobe Acrobat 8 Professional
Adobe Bridge CS3
Adobe Device Central CS3
Adobe Help Viewer 1.0.app
Adobe Help Viewer 1.1.app
Adobe Illustrator CS
Adobe Illustrator CS3
Adobe Photoshop CS
Adobe Photoshop CS3
Adobe Reader 9

nu greppa jag bara adobe produkter, men det hade varit nice att kunna ta allt och filtrera ut det man ville ha och se antal påträffade.

posta nu inte datafilen rätt ut här. Din arbetsgivare blir nog inte glad om hela arbetsplatsens maskiner ligger ute till allmänt beskådande

Ursprungligen av Goflorp:

posta nu inte datafilen rätt ut här. Din arbetsgivare blir nog inte glad om hela arbetsplatsens maskiner ligger ute till allmänt beskådande

haha ne jag tänkte det också men tack endå :D. lätt man glömmer:D

  • Medlem
  • 2009-09-19 12:19

Jag kan snabbt hjälpa dig med kod för ett applescript. Det kanske du kan köra över Remote Desktop?
Det kollar programfiler i programmappen och en nivå ner, det fångar alltså /Applications/Adobe Bridge/Bridge.app.
Vill du ha en helt rekursiv genomsökning tar det (mig) längre tid att få ihop det.

set myAppsInFolders to {}
tell application "Finder"

	set myDisk to name of startup disk
	set myAppFolder to folder (myDisk & ":Applications")
	set myApps to displayed name of application files of myAppFolder
	set mySubFolders to folders of myAppFolder
	repeat with I from 1 to (count mySubFolders)
		set end of myAppsInFolders to displayed name of application files of item I of mySubFolders
	end repeat
	set myAllApps to myApps & myAppsInFolders
	tell me to set text item delimiters to "	"
	set myAppsNames to myApps as string
	tell me to set text item delimiters to "	"
	
	set myComputer to (computer name of (system info))
	set myInventory to myComputer & "	" & myApps
	set myLognameDialog to text returned of (display dialog "Vad ska loggfilen heta?" default answer "Apps_in_" & myComputer)
	set myLogFile to (((choose folder with prompt "Peka ut var du vill spara filen " & myLognameDialog) as string) & myLognameDialog & ".txt") as file specification
	
	try
		open for access myLogFile with write permission
		set eof of myLogFile to 0
		write myInventory to myLogFile starting at eof --as list
		close access myLogFile
	on error
		try
			close access myLogFile
		end try
	end try
	
end tell

Nu är det för att visa funktionaliteten gjort med dialoger för vad loggfilen ska heta och var den ska sparas, men det kan man ju förstås skriva bort.

Ursprungligen av Baron:

Jag kan snabbt hjälpa dig med kod för ett applescript. Det kanske du kan köra över Remote Desktop?
Det kollar programfiler i programmappen och en nivå ner, det fångar alltså /Applications/Adobe Bridge/Bridge.app.
Vill du ha en helt rekursiv genomsökning tar det (mig) längre tid att få ihop det.

set myAppsInFolders to {}
tell application "Finder"

	set myDisk to name of startup disk
	set myAppFolder to folder (myDisk & ":Applications")
	set myApps to displayed name of application files of myAppFolder
	set mySubFolders to folders of myAppFolder
	repeat with I from 1 to (count mySubFolders)
		set end of myAppsInFolders to displayed name of application files of item I of mySubFolders
	end repeat
	set myAllApps to myApps & myAppsInFolders
	tell me to set text item delimiters to "	"
	set myAppsNames to myApps as string
	tell me to set text item delimiters to ""
	
	set myComputer to (computer name of (system info))
	set myInventory to myComputer & "	" & myApps
	set myLognameDialog to text returned of (display dialog "Vad ska loggfilen heta?" default answer "Apps_in_" & myComputer)
	set myLogFile to (((choose folder with prompt "Peka ut var du vill spara filen " & myLognameDialog) as string) & myLognameDialog & ".txt") as file specification
	
	try
		open for access myLogFile with write permission
		set eof of myLogFile to 0
		write myInventory to myLogFile starting at eof --as list
		close access myLogFile
	on error
		try
			close access myLogFile
		end try
	end try
	
end tell

Nu är det för att visa funktionaliteten gjort med dialoger för vad loggfilen ska heta och var den ska sparas, men det kan man ju förstås skriva bort.

tack,
jag testade att köra det men får

error "Kan inte ändra \"Macintosh HD:Users:konto:Desktop:test.txt\" till typ file specification." number -1700 from "Macintosh HD:Users:konto:Desktop:test.txt" to file specification

testade ändra det till as alias men då hittar den ju inte filen eftersom den inte är skapad.

  • Medlem
  • 2009-09-19 12:29

Hm, vad kör du för OS?

Ursprungligen av Baron:

Hm, vad kör du för OS?

aah, det kan det va, jag kör 10.6

  • Medlem
  • 2009-09-19 12:35

Testa detta då:

set myAppsInFolders to {}
tell application "Finder"
	
	set myDisk to name of startup disk
	set myAppFolder to folder (myDisk & ":Applications")
	set myApps to displayed name of application files of myAppFolder
	set mySubFolders to folders of myAppFolder
	repeat with I from 1 to (count mySubFolders)
		set end of myAppsInFolders to displayed name of application files of item I of mySubFolders
	end repeat
	set myAllApps to myApps & myAppsInFolders
	tell me to set text item delimiters to "	"
	set myAppsNames to myAllApps as string -- myApps ändrat till myAllApps 
	tell me to set text item delimiters to ""
	
	set myComputer to (computer name of (system info))
	set myInventory to myComputer & "	" & myApps
	set myLognameDialog to text returned of (display dialog "Vad ska loggfilen heta?" default answer "Apps_in_" & myComputer)
	set myLogFile to (((choose folder with prompt "Peka ut var du vill spara filen " & myLognameDialog) as string) & myLognameDialog & ".txt") as string
	
end tell

try
	set myLogFileRef to (open for access file myLogFile with write permission)
	write myInventory & return to myLogFileRef starting at eof
	close access myLogFileRef
on error
	try
		close access myLogFileRef
	end try
end try

edit: ändrat bugg i koden kl 23.59

  • Medlem
  • 2009-09-19 12:37

edit: jag flyttade den sista end tell-raden några rader upp i koden.

Ursprungligen av Baron:

edit: jag flyttade den sista end tell-raden några rader upp i koden.

Nu fungerade det,
Tack så jätte mycket. Det enda problemet jag får är att när man tar in det i tex excel/numbers så kan man inte få det sorterat för att alla datorer inte har samma innehåll.

det kan se ut såhär
dator1 adobe PS Adobe IS Acrobat
Dator2 acrobat Chess etc

Du kanske kan ställa kolumnerna till fasta värden

program Photoshop Excel Word

Dator1 ------- Excel Word
Dator2 Photoshop ------ Word

Du har 400 burk och jag förmodar att du inte behöver ha kolumner bort till "texthanteraren" va :-)?

Det skiter sig rätt bra att formattera text på 99se, det blev inte snyggt.
Hoppas andemeningen gick fram ändå.

Ursprungligen av Goflorp:

Du kanske kan ställa kolumnerna till fasta värden

program Photoshop Excel Word

Dator1 ------- Excel Word
Dator2 Photoshop ------ Word

Du har 400 burk och jag förmodar att du in te behöver ha kolumner bort till "texthanteraren" va :-)?

Ja jag kan testa att köra fasta värden, bra idé tack.. ne jag behöver inte ha bort till texthanteraren. så det är nog mer att man får sitta och mecka med datan till det kommer in på rätt plats.
men tack för din hjälp den har varit guld

  • Medlem
  • 2009-09-19 14:17

Är det speciella program du letar efter är det bättre att leta efter dessa och logga om de finns eller inte finns. Nu tar du reda på alla program.

Ursprungligen av Baron:

Är det speciella program du letar efter är det bättre att leta efter dessa och logga om de finns eller inte finns. Nu tar du reda på alla program.

ja just nu är det adobe produkter jag letar efter så du har rätt, för annars kan man få en bra lång lista

  • Medlem
  • 2009-09-19 14:18

men du kan ju också leta efter förekomster i vilken textredigerare som helst om du bara vill veta hur många du har.

Helt rätt Baron. man får en summa; 14 licenser Excel tack.

Med (avsevärt) mer meckande kan man även säga att "kerstins maskin" har de här programmen....
Nästa gång arbetsgivaren kommer med sådana här frågor kan man ju överträffa dem med råge

Min hjälp i det hela är liten, Baron skall däremot ha medalj för sitt engagemang.

Ursprungligen av Goflorp:

Helt rätt Baron. man får en summa; 14 licenser Excel tack.

Med (avsevärt) mer meckande kan man även säga att "kerstins maskin" har de här programmen....
Nästa gång arbetsgivaren kommer med sådana här frågor kan man ju överträffa dem med råge

Min hjälp i det hela är liten, Baron skall däremot ha medalj för sitt engagemang.

Baron ska hyllas på offentlig plats

  • Medlem
  • 2009-09-19 14:27
Ursprungligen av Goflorp:

Med (avsevärt) mer meckande kan man även säga att "kerstins maskin" har de här programmen....

Just den infon får du med mitt skript ovan. Och det är inte så mycket mer meck, jag hinner bara inte göra det just nu...

Ursprungligen av Baron:

Just den infon får du med mitt skript ovan. Och det är inte så mycket mer meck, jag hinner bara inte göra det just nu...

Förstår det. jag ville bara påtala för trådskaparen att om han tar all den infon du ordnar fram med scriptet och sedan bara summerar ihop så kastar man ju bort en himla massa data. Om man benar ut det lite i tabeller så har man ju ett underlag som heter duga och som är lättöverskådligt.

  • Medlem
  • Mölndal
  • 2009-09-19 22:02

Baron, en stor eloge för din hjälpsamhet!

  • Medlem
  • 2009-09-20 01:35

Detta letar efter vissa specifika program (Acrobat, InD, AI och PS). Installationen får heller inte avvika för mycket från standard, tex måste namnen på acrobatmapparna innehålla 7, 8 eller 9 och de andra CS2, CS3 eller CS4.

set myAcrobat7 to "	-"
set myAcrobat8 to "	-"
set myAcrobat9 to "	-"
set myAICS2 to "	-"
set myAICS3 to "	-"
set myAICS4 to "	-"
set myInDCS2 to "	-"
set myInDCS3 to "	-"
set myInDCS4 to "	-"
set myPSCS2 to "	-"
set myPSCS3 to "	-"
set myPSCS4 to "	-"

tell application "Finder"
	
	set myDisk to name of startup disk
	set myAppFolder to folder (myDisk & ":Applications")
	set mySubFolders to folders of myAppFolder
	repeat with I from 1 to (count mySubFolders)
		if displayed name of item I of mySubFolders contains "Acrobat" or displayed name of item I of mySubFolders contains "Illustrator" or displayed name of item I of mySubFolders contains "InDesign" or displayed name of item I of mySubFolders contains "Photoshop" then 
			set myApps to application files of item I of mySubFolders
			repeat with R from 1 to count myApps
				set myApp to displayed name of item R of myApps
				set myAppContainer to displayed name of container of item R of myApps
				set myVersion to version of item R of myApps
				
				if myApp contains "Acrobat" and myAppContainer contains "7" then
					set myAcrobat7 to "	X"
				else if myApp contains "Acrobat" and myAppContainer contains "8" then
					set myAcrobat8 to "	X"
				else if myApp contains "Acrobat" and myAppContainer contains "9" then
					set myAcrobat9 to "	X"
				else if myApp contains "Illustrator" and myAppContainer contains "CS2" then
					set myAICS2 to "	X"
				else if myApp contains "Illustrator" and myAppContainer contains "CS3" then
					set myAICS3 to "	X"
				else if myApp contains "Illustrator" and myAppContainer contains "CS4" then
					set myAICS4 to "	X"
				else if myApp contains "InDesign" and myAppContainer contains "CS2" then
					set myInDCS2 to "	X"
				else if myApp contains "InDesign" and myAppContainer contains "CS3" then
					set myInDCS3 to "	X"
				else if myApp contains "InDesign" and myAppContainer contains "CS4" then
					set myInDCS4 to "	X"
				else if myApp contains "Photoshop" and myAppContainer contains "CS2" then
					set myPSCS2 to "	X"
				else if myApp contains "Photoshop" and myAppContainer contains "CS3" then
					set myPSCS3 to "	X"
				else if myApp contains "Photoshop" and myAppContainer contains "CS4" then
					set myPSCS4 to "	X"
				end if
			end repeat
		end if
	end repeat
	
	set myApps to myAcrobat7 & myAcrobat8 & myAcrobat9 & myAICS2 & myAICS3 & myAICS4 & myInDCS2 & myInDCS3 & myInDCS4 & myPSCS2 & myPSCS3 & myPSCS4 as string
	
	set myComputer to (computer name of (system info))
	set myInventory to myComputer & myApps
	-- ta bort följande rad, den visar bara vad kolumnerna innehåller:
	set myInventory to "myComputer	myAcrobat7	myAcrobat8	myAcrobat9	myAICS2	myAICS3	myAICS4	myInDCS2	myInDCS3	myInDCS4	myPSCS2	myPSCS3	myPSCS4" & return & myInventory
	set myLognameDialog to text returned of (display dialog "Vad ska loggfilen heta?" default answer "Apps_in_" & myComputer)
	set myLogFile to (((choose folder with prompt "Peka ut var du vill spara filen " & myLognameDialog) as string) & myLognameDialog & ".txt") as string
	
end tell

try
	set myLogFileRef to (open for access file myLogFile with write permission)
	set eof of myLogFileRef to 0
	write myInventory & return to myLogFileRef starting at eof
	close access myLogFileRef
on error
	try
		close access myLogFileRef
	end try
end try
  • Medlem
  • 2009-09-20 13:41

Kan inte låta bli att fippla...

Nu jagas Acrobat 7-9, InD -, PS - och AI CS2-4 i respektive mapp.
Dessutom letar det efter dessa program i andra mappar eller direkt i programmappen och redovisar alla förekomster av resp program i en accumulerande kolumn. Man kan alltså i Excel lägga ihop kolumn 3, 4 och 5 och subtrahera resultatet från värdet i kolumn 6. Detta ska bli 0. Om det blir mer än 0 finns det installationer av programmet som avviker från hur Adobes installerare gör.
Jag letar fortfarande inte efter fall där programfilerna heter något annat än de gör vid installation.

set myAcrobat7 to 0
set myAcrobat8 to 0
set myAcrobat9 to 0
set myAcrobatTotal to 0
set myAICS2 to 0
set myAICS3 to 0
set myAICS4 to 0
set myAITotal to 0
set myInDCS2 to 0
set myInDCS3 to 0
set myInDCS4 to 0
set myInDTotal to 0
set myPSCS2 to 0
set myPSCS3 to 0
set myPSCS4 to 0
set myPSTotal to 0

set myDate to current date
set myShortDate to short date string of myDate
set myTime to time string of myDate
set myDate to myShortDate & ", " & myTime

tell application "Finder"
	
	set myDisk to name of startup disk
	set myAppFolder to folder (myDisk & ":Applications")
	set myApps to application files of myAppFolder
	repeat with K from 1 to count myApps
		if displayed name of item K of myApps contains "Adobe Acrobat" then
			set myAcrobatTotal to myAcrobatTotal + 1
		else if displayed name of item K of myApps contains "Adobe Illustrator CS" then
			set myAITotal to myAITotal + 1
		else if displayed name of item K of myApps contains "Adobe inDesign CS" then
			set myInDTotal to myInDTotal + 1
		else if displayed name of item K of myApps contains "Adobe Photoshop CS" then
			set myPSTotal to myPSTotal + 1
		end if
	end repeat
	set mySubFolders to folders of myAppFolder
	repeat with I from 1 to (count mySubFolders)
		if displayed name of item I of mySubFolders contains "Acrobat" or displayed name of item I of mySubFolders contains "Illustrator" or displayed name of item I of mySubFolders contains "InDesign" or displayed name of item I of mySubFolders contains "Photoshop" then
			set myApps to application files of item I of mySubFolders
			repeat with R from 1 to count myApps
				set myApp to displayed name of item R of myApps
				set myAppContainer to displayed name of container of item R of myApps
				set myVersion to version of item R of myApps
				
				if myApp contains "Adobe Acrobat" and myAppContainer contains "7" then
					set myAcrobat7 to 1
					set myAcrobatTotal to myAcrobatTotal + 1
				else if myApp contains "Adobe Acrobat" and myAppContainer contains "8" then
					set myAcrobat8 to 1
					set myAcrobatTotal to myAcrobatTotal + 1
				else if myApp contains "Adobe Acrobat" and myAppContainer contains "9" then
					set myAcrobat9 to 1
					set myAcrobatTotal to myAcrobatTotal + 1
				else if myApp contains "Adobe Illustrator CS" and myAppContainer contains "CS2" then
					set myAICS2 to 1
					set myAITotal to myAITotal + 1
				else if myApp contains "Adobe Illustrator CS" and myAppContainer contains "CS3" then
					set myAICS3 to 1
					set myAITotal to myAITotal + 1
				else if myApp contains "Adobe Illustrator CS" and myAppContainer contains "CS4" then
					set myAICS4 to 1
					set myAITotal to myAITotal + 1
				else if myApp contains "Adobe inDesign CS" and myAppContainer contains "CS2" then
					set myInDCS2 to 1
					set myInDTotal to myInDTotal + 1
				else if myApp contains "Adobe inDesign CS" and myAppContainer contains "CS3" then
					set myInDCS3 to 1
					set myInDTotal to myInDTotal + 1
				else if myApp contains "Adobe inDesign CS" and myAppContainer contains "CS4" then
					set myInDCS4 to 1
					set myInDTotal to myInDTotal + 1
				else if myApp contains "Adobe Photoshop CS" and myAppContainer contains "CS2" then
					set myPSCS2 to 1
					set myPSTotal to myPSTotal + 1
				else if myApp contains "Adobe Photoshop CS" and myAppContainer contains "CS3" then
					set myPSCS3 to 1
					set myPSTotal to myPSTotal + 1
				else if myApp contains "Adobe Photoshop CS" and myAppContainer contains "CS4" then
					set myPSCS4 to 1
					set myPSTotal to myPSTotal + 1
				else if myApp contains "Adobe Acrobat" then
					set myAcrobatTotal to myAcrobatTotal + 1
				else if myApp contains "Adobe Illustrator CS" then
					set myAITotal to myAITotal + 1
				else if myApp contains "Adobe InDesign CS" then
					set myInDTotal to myInDTotal + 1
				else if myApp contains "Adobe Photoshop CS" then
					set myPSTotal to myPSTotal + 1
				end if
			end repeat
		end if
	end repeat
	
	--	tell me to set text item delimiters to " "
	set myApps to (myAcrobat7 & "	" & myAcrobat8 & "	" & myAcrobat9 & "	" & myPSTotal & "	" & myAICS2 & "	" & myAICS3 & "	" & myAICS4 & "	" & myAITotal & "	" & myInDCS2 & "	" & myInDCS3 & "	" & myInDCS4 & "	" & myInDTotal & "	" & myPSCS2 & "	" & myPSCS3 & "	" & myPSCS4 & "	" & myPSTotal) as string
	
	set myComputer to (computer name of (system info))
	set myInventory to myComputer & "	" & myDate & "	" & myApps
	
	-- ta bort följande rad, den visar bara vad kolumnerna innehåller:
	set myInventory to "myComputer	myDate	myAcrobat7	myAcrobat8	myAcrobat9	myAcrobatTotal	myAICS2	myAICS3	myAICS4	myAITotal	myInDCS2	myInDCS3	myInDCS4	myInDTotal	myPSCS2	myPSCS3	myPSCS4	myPSTotal" & return & myInventory
	set myLognameDialog to text returned of (display dialog "Vad ska loggfilen heta?" default answer "Apps_in_" & myComputer)
	set myLogFile to (((choose folder with prompt "Peka ut var du vill spara filen " & myLognameDialog) as string) & myLognameDialog & ".txt") as string
	
end tell

try
	set myLogFileRef to (open for access file myLogFile with write permission)
	-- Ta bort kommenteringen på följande rad om du vill radera loggfilen varje gång du kör skriptet:
	--	set eof of myLogFileRef to 0
	write myInventory & return to myLogFileRef starting at eof
	close access myLogFileRef
on error
	try
		close access myLogFileRef
	end try
end try
Ursprungligen av Baron:

Kan inte låta bli att fippla...

Nu jagas Acrobat 7-9, InD -, PS - och AI CS2-4 i respektive mapp.
Dessutom letar det efter dessa program i andra mappar eller direkt i programmappen och redovisar alla förekomster av resp program i en accumulerande kolumn. Man kan alltså i Excel lägga ihop kolumn 3, 4 och 5 och subtrahera resultatet från värdet i kolumn 6. Detta ska bli 0. Om det blir mer än 0 finns det installationer av programmet som avviker från hur Adobes installerare gör.
Jag letar fortfarande inte efter fall där programfilerna heter något annat än de gör vid installation.

set myAcrobat7 to 0
set myAcrobat8 to 0
set myAcrobat9 to 0
set myAcrobatTotal to 0
set myAICS2 to 0
set myAICS3 to 0
set myAICS4 to 0
set myAITotal to 0
set myInDCS2 to 0
set myInDCS3 to 0
set myInDCS4 to 0
set myInDTotal to 0
set myPSCS2 to 0
set myPSCS3 to 0
set myPSCS4 to 0
set myPSTotal to 0

set myDate to current date
set myShortDate to short date string of myDate
set myTime to time string of myDate
set myDate to myShortDate & ", " & myTime

tell application "Finder"
	
	set myDisk to name of startup disk
	set myAppFolder to folder (myDisk & ":Applications")
	set myApps to application files of myAppFolder
	repeat with K from 1 to count myApps
		if displayed name of item K of myApps contains "Adobe Acrobat" then
			set myAcrobatTotal to myAcrobatTotal + 1
		else if displayed name of item K of myApps contains "Adobe Illustrator CS" then
			set myAITotal to myAITotal + 1
		else if displayed name of item K of myApps contains "Adobe inDesign CS" then
			set myInDTotal to myInDTotal + 1
		else if displayed name of item K of myApps contains "Adobe Photoshop CS" then
			set myPSTotal to myPSTotal + 1
		end if
	end repeat
	set mySubFolders to folders of myAppFolder
	repeat with I from 1 to (count mySubFolders)
		if displayed name of item I of mySubFolders contains "Acrobat" or displayed name of item I of mySubFolders contains "Illustrator" or displayed name of item I of mySubFolders contains "InDesign" or displayed name of item I of mySubFolders contains "Photoshop" then
			set myApps to application files of item I of mySubFolders
			repeat with R from 1 to count myApps
				set myApp to displayed name of item R of myApps
				set myAppContainer to displayed name of container of item R of myApps
				set myVersion to version of item R of myApps
				
				if myApp contains "Adobe Acrobat" and myAppContainer contains "7" then
					set myAcrobat7 to 1
					set myAcrobatTotal to myAcrobatTotal + 1
				else if myApp contains "Adobe Acrobat" and myAppContainer contains "8" then
					set myAcrobat8 to 1
					set myAcrobatTotal to myAcrobatTotal + 1
				else if myApp contains "Adobe Acrobat" and myAppContainer contains "9" then
					set myAcrobat9 to 1
					set myAcrobatTotal to myAcrobatTotal + 1
				else if myApp contains "Adobe Illustrator CS" and myAppContainer contains "CS2" then
					set myAICS2 to 1
					set myAITotal to myAITotal + 1
				else if myApp contains "Adobe Illustrator CS" and myAppContainer contains "CS3" then
					set myAICS3 to 1
					set myAITotal to myAITotal + 1
				else if myApp contains "Adobe Illustrator CS" and myAppContainer contains "CS4" then
					set myAICS4 to 1
					set myAITotal to myAITotal + 1
				else if myApp contains "Adobe inDesign CS" and myAppContainer contains "CS2" then
					set myInDCS2 to 1
					set myInDTotal to myInDTotal + 1
				else if myApp contains "Adobe inDesign CS" and myAppContainer contains "CS3" then
					set myInDCS3 to 1
					set myInDTotal to myInDTotal + 1
				else if myApp contains "Adobe inDesign CS" and myAppContainer contains "CS4" then
					set myInDCS4 to 1
					set myInDTotal to myInDTotal + 1
				else if myApp contains "Adobe Photoshop CS" and myAppContainer contains "CS2" then
					set myPSCS2 to 1
					set myPSTotal to myPSTotal + 1
				else if myApp contains "Adobe Photoshop CS" and myAppContainer contains "CS3" then
					set myPSCS3 to 1
					set myPSTotal to myPSTotal + 1
				else if myApp contains "Adobe Photoshop CS" and myAppContainer contains "CS4" then
					set myPSCS4 to 1
					set myPSTotal to myPSTotal + 1
				else if myApp contains "Adobe Acrobat" then
					set myAcrobatTotal to myAcrobatTotal + 1
				else if myApp contains "Adobe Illustrator CS" then
					set myAITotal to myAITotal + 1
				else if myApp contains "Adobe InDesign CS" then
					set myInDTotal to myInDTotal + 1
				else if myApp contains "Adobe Photoshop CS" then
					set myPSTotal to myPSTotal + 1
				end if
			end repeat
		end if
	end repeat
	
	--	tell me to set text item delimiters to " "
	set myApps to (myAcrobat7 & "	" & myAcrobat8 & "	" & myAcrobat9 & "	" & myPSTotal & "	" & myAICS2 & "	" & myAICS3 & "	" & myAICS4 & "	" & myAITotal & "	" & myInDCS2 & "	" & myInDCS3 & "	" & myInDCS4 & "	" & myInDTotal & "	" & myPSCS2 & "	" & myPSCS3 & "	" & myPSCS4 & "	" & myPSTotal) as string
	
	set myComputer to (computer name of (system info))
	set myInventory to myComputer & "	" & myDate & "	" & myApps
	
	-- ta bort följande rad, den visar bara vad kolumnerna innehåller:
	set myInventory to "myComputer	myDate	myAcrobat7	myAcrobat8	myAcrobat9	myAcrobatTotal	myAICS2	myAICS3	myAICS4	myAITotal	myInDCS2	myInDCS3	myInDCS4	myInDTotal	myPSCS2	myPSCS3	myPSCS4	myPSTotal" & return & myInventory
	set myLognameDialog to text returned of (display dialog "Vad ska loggfilen heta?" default answer "Apps_in_" & myComputer)
	set myLogFile to (((choose folder with prompt "Peka ut var du vill spara filen " & myLognameDialog) as string) & myLognameDialog & ".txt") as string
	
end tell

try
	set myLogFileRef to (open for access file myLogFile with write permission)
	-- Ta bort kommenteringen på följande rad om du vill radera loggfilen varje gång du kör skriptet:
	--	set eof of myLogFileRef to 0
	write myInventory & return to myLogFileRef starting at eof
	close access myLogFileRef
on error
	try
		close access myLogFileRef
	end try
end try

fan va snyggt. denna kan man ju ha som rapporterings verktyg. så att man ber den att lägga ut filen på en delad yta och låter något program plocka upp dom och sammanställer. nice tack.

  • Medlem
  • 2012-03-11 00:33

Heh, kul att se hur man har utvecklats sedan set där skrevs...
jag hade gjort det bättre (snyggare) idag.

Ursprungligen av Baron:

Heh, kul att se hur man har utvecklats sedan set där skrevs...
jag hade gjort det bättre (snyggare) idag.

Ja det är alltid kul att se att det faktiskt har hänt något på ett par år oavsätt tack för hjälpen när det begav sig!

  • Medlem
  • 2012-03-11 15:11
Ursprungligen av soundproof:

Hejsan,
jag håller på att göra en liten inventering på våra maskiner och skrev ett litet shellscript som listade allt som jag hade i min Applications mapp, bara väldigt basic.

ls /Applications

men så slog det mig att det finns ju faktiskt system profiler i macen där allt står.
jag fick ut informationen till XML och den filen är ju jätte kul att leka med, speciellt om man har bra kunskaper i applescipt och xml.

jag har googlat runt världen för att hitta något sett att få ut informationen som jag vill ha och hittat lite små grejjer som kan funka men inget klockrent.

det jag vill göra är att ta informationen på clienten och skicka det till ett excel ark eller liknande för att kunna se hur mycket av varje jag har installerat.

men min kunskap räcker inte så långt så jag kan klara det, så min fråga till er är om det är någon som har någon ide på vad man kan göra på ngt lätt sett eller om det finns något bra inventerings system för mac.

tack på förhand

Detta tar ut alla program som är installerade som ren text:

/usr/sbin/system_profiler SPApplicationsDataType > ~/Desktop/applist.txt

Vad man gör med det är väl en annan sak.

1
Bevaka tråden