{"id":211148,"date":"2024-03-05T15:39:05","date_gmt":"2024-03-05T15:39:05","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=211148"},"modified":"2024-03-05T15:39:05","modified_gmt":"2024-03-05T15:39:05","slug":"automatisera-avinstallation-appar-macos-shell-script","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/sv\/script-hub\/automatisera-avinstallation-appar-macos-shell-script\/","title":{"rendered":"S\u00e5 h\u00e4r automatiserar du avinstallation av appar p\u00e5 macOS med Shell Script"},"content":{"rendered":"<p>N\u00e4r det g\u00e4ller macOS finns det flera s\u00e4tt att <strong>avinstallera appar<\/strong>: dra och sl\u00e4pp dem i papperskorgen, anv\u00e4nd ett s\u00e4rskilt avinstallationsprogram eller g\u00e5 via Launchpad. Dessa metoder saknar dock ofta den effektivitet och automatisering som kr\u00e4vs f\u00f6r storskalig drift i IT-milj\u00f6er. F\u00f6r IT-proffs och IT-partners (MSP) som har till uppgift att hantera en flotta av Mac-enheter \u00e4r det mest effektiva s\u00e4ttet att anv\u00e4nda ett skalskript f\u00f6r detta \u00e4ndam\u00e5l.<\/p>\n<h2>Avinstallera appar p\u00e5 macOS med Shell Script<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">#!\/usr\/bin\/env bash\r\n# Description: This will search under \/Applications\/* and under each user's Applications folder for the app you speficy to remove and will only remove the first found app.\r\n#\r\n# Release Notes: Initial Release\r\n# By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/terms-of-use.\r\n# Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. \r\n# Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. \r\n# Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n# Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. \r\n# Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. \r\n# Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. \r\n# EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n#\r\n# Usage:\r\n#  &lt;ApplicationName.app&gt;\r\n# Accepts only one application\r\n# Specify the exact name of the application.\r\n# Applications with space(s) in the name will need double quotes surrounding it. Example: \"Google Chrome.app\"\r\n# As macOS's file system is typically case sensitive, matching the case is important.\r\n#\r\n# EXAMPLE\r\n#  If we have \/Applications\/Docker.app installed.\r\n#  Then our argument would be:\r\n#    Docker.app\r\n# EXAMPLE\r\n#  If we have \/Applications\/Google Chrome.app installed.\r\n#  Then our argument would be:\r\n#    \"Google Chrome.app\"\r\nAPP=$1\r\n# Get a list of all installed app's, filter to only have \/Applications and \/User\/&lt;username&gt;\/Applications, filter the requested app, select the first found app\r\nmdfind kMDItemContentTypeTree=com.apple.application-bundle -onlyin &gt;\/dev\/null\r\nAPP_TO_UNINSTALL=$(system_profiler SPApplicationsDataType 2&gt;\/dev\/null | sed -n 's\/^ *Location: (.*)\/1\/p' | grep -E '^\/Applications.*|\/Users\/.+\/Applications.*' | grep \"${APP}\" | head -n 1)\r\necho \"Found ${APP_TO_UNINSTALL}\"\r\necho \"Removing ${APP_TO_UNINSTALL}\"\r\n# Remove app\r\nrm -rf \"${APP_TO_UNINSTALL}\"\r\nstatus=$?\r\n# Output result\r\n[ $status -eq 0 ] &amp;&amp; echo \"Removed ${APP_TO_UNINSTALL}\" || echo \"Failed to remove ${APP_TO_UNINSTALL}\"\r\n# Return status\r\nexit $status\r\n<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>F\u00e5 tillg\u00e5ng till \u00f6ver 300+ skript i NinjaOne Dojo<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/sv\/kostnadsfri-provperiod-formular\">F\u00e5 tillg\u00e5ng till<\/a><\/p>\n<\/div>\n<h2>The Script&#8217;s Anatomy: Hur det fungerar<\/h2>\n<p><strong>Anv\u00e4nda <\/strong><strong>mdfind<\/strong><strong> och <\/strong><strong>system_profiler<\/strong><\/p>\n<p>Skriptet anv\u00e4nder macOS egna verktyg f\u00f6r att utf\u00f6ra sin uppgift. <strong>mdfind<\/strong>, en del av Spotlight, anv\u00e4nds inledningsvis f\u00f6r att s\u00f6ka efter filernas metadata. Detta g\u00f6r att skriptet kan sammanst\u00e4lla en lista \u00f6ver alla programpaket och endast fokusera p\u00e5 de som finns i <strong>\/Applications<\/strong> och <strong>\/Users\/&lt;anv\u00e4ndarnamn&gt;<\/strong>\/Applications.<\/p>\n<p><strong>system_profiler<\/strong>, ett annat macOS-verktyg, samlar in detaljerad information om de installerade programmen. N\u00e4r den anv\u00e4nds med <strong>SPApplicationsDataType<\/strong> listar den alla program som \u00e4r installerade p\u00e5 maskinen.<\/p>\n<h2>Filtrering av resultat med grep<\/h2>\n<p>Kommandoradsverktyget grep anv\u00e4nds tv\u00e5 g\u00e5nger i skriptet. Den f\u00f6rsta f\u00f6rekomsten filtrerar genom utdata fr\u00e5n <strong>system_profiler<\/strong> f\u00f6r att hitta s\u00f6kv\u00e4gar som antingen b\u00f6rjar med \/Applications eller med \/Users\/&lt;username&gt;\/Applications. Den andra anv\u00e4ndningen begr\u00e4nsar dessa resultat till att matcha det exakta namnet p\u00e5 den angivna appen.<\/p>\n<h2>Den m\u00e4ktiga rm<\/h2>\n<p>Den faktiska avinstallationen sker med kommandot rm -rf, ett kraftfullt verktyg som tar bort filer och kataloger. H\u00e4r riktar den in sig p\u00e5 programpaketet som hittades med de tidigare kommandona och tar bort det fr\u00e5n systemet.<\/p>\n\n<h2>F\u00f6rdelarna med automatisering: Varf\u00f6r anv\u00e4nda detta skript<\/h2>\n<h3>Tidsbesparingar<\/h3>\n<p>Automation \u00e4r synonymt med tidsbesparing. Med skriptet slipper du manuell avinstallation, vilket g\u00f6r att IT-personalen kan fokusera p\u00e5 viktigare uppgifter.<\/p>\n<h3>Skalbarhet<\/h3>\n<p>Skriptet kan vara en del av ett mer omfattande automatiseringssystem. F\u00f6rest\u00e4ll dig att du inf\u00f6rlivar det i ett systemhanteringsverktyg som fj\u00e4rrstyr detta skript p\u00e5 alla Mac-enheter i ett n\u00e4tverk. Skalbarheten h\u00e4r \u00e4r enorm.<\/p>\n<h3>Noggrannhet<\/h3>\n<p>Till skillnad fr\u00e5n manuella metoder d\u00e4r m\u00e4nskliga misstag \u00e4r en faktor, \u00e4r skriptet programmerat f\u00f6r att hitta den exakta app-paketet, vilket minskar risken f\u00f6r oavsiktliga raderingar eller f\u00f6rbiseenden.<\/p>\n<h3>Flexibilitet<\/h3>\n<p>Med m\u00f6jligheten att ange det exakta namnet p\u00e5 programmet som ett argument kan du skr\u00e4ddarsy avinstallationsprocessen efter dina specifika behov. Linda in detta skript i ett annat skript och du har ett kraftfullt verktyg f\u00f6r att avinstallera flera appar sekventiellt.<\/p>\n<h3>F\u00f6rdelar med efterlevnad<\/h3>\n<p>I branscher som \u00e4r reglerade eller har strikta efterlevnadsstandarder kan det leda till p\u00e5f\u00f6ljder om man inte tar bort appar som inte uppfyller kraven eller som inte \u00e4r auktoriserade. Automatisering av avinstallationsprocessen s\u00e4kerst\u00e4ller att du alltid uppfyller kraven med minimal anstr\u00e4ngning.<\/p>\n<h2>Avslutning<\/h2>\n<p>NinjaOne \u00e4r en <a href=\"https:\/\/www.ninjaone.com\/sv\/\">molnbaserad IT-hanteringsplattform<\/a> som kan anv\u00e4ndas f\u00f6r att automatisera en m\u00e4ngd olika uppgifter, inklusive avinstallation av appar. Med NinjaOne kan du skapa en policy som k\u00f6r skalskriptet. Policyn kan schemal\u00e4ggas s\u00e5 att den k\u00f6rs \u00e5terkommande eller utl\u00f6sas av en specifik h\u00e4ndelse, t.ex. installation av en ny app.<\/p>\n<p>H\u00e4r \u00e4r stegen f\u00f6r hur du anv\u00e4nder NinjaOne f\u00f6r att automatisera skriptet f\u00f6r avinstallation av appen:<\/p>\n<ol>\n<li>Skapa en policy i NinjaOne.<\/li>\n<li>I policyn v\u00e4ljer du \u00e5tg\u00e4rden &#8221;Skript&#8221;.<\/li>\n<li>Klistra in skalskriptet i skriptredigeraren.<\/li>\n<li>I avsnittet &#8221;Argument&#8221; anger du namnet p\u00e5 den app som du vill avinstallera.<\/li>\n<li>Schemal\u00e4gg policyn s\u00e5 att den k\u00f6rs \u00e5terkommande, eller utl\u00f6s den vid en specifik h\u00e4ndelse.<\/li>\n<\/ol>\n<p>N\u00e4r policyn har skapats kommer den automatiskt att avinstallera den angivna appen fr\u00e5n alla macOS-enheter som hanteras av NinjaOne. Det kan spara mycket tid och arbete, och det kan hj\u00e4lpa dig att se till att alla dina macOS-enheter uppfyller organisationens s\u00e4kerhetspolicyer.<\/p>\n<p>H\u00e4r \u00e4r n\u00e5gra ytterligare f\u00f6rdelar med att anv\u00e4nda NinjaOne f\u00f6r att automatisera skriptet f\u00f6r avinstallation av appar:<\/p>\n<ul>\n<li>Centraliserad ledning: NinjaOne tillhandah\u00e5ller en centraliserad konsol d\u00e4r du kan hantera alla dina macOS-enheter. Det g\u00f6r det enkelt att skapa och distribuera policyer, och det g\u00f6r det \u00e4ven l\u00e4ttare att sp\u00e5ra statusen f\u00f6r dina enheter.<\/li>\n<li>Skalbarhet: NinjaOne kan skalas f\u00f6r att hantera ett stort antal macOS-enheter. Detta g\u00f6r den till ett bra val f\u00f6r organisationer med en stor IT-infrastruktur.<\/li>\n<li>S\u00e4kerhet: NinjaOne \u00e4r en s\u00e4ker plattform som anv\u00e4nder kryptering enligt industristandard f\u00f6r att skydda dina data. Detta bidrar till att s\u00e4kerst\u00e4lla att dina skript f\u00f6r avinstallation av appar \u00e4r s\u00e4kra och att dina data skyddas.<\/li>\n<\/ul>\n","protected":false},"author":35,"featured_media":142119,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4210],"use_cases":[4255],"class_list":["post-211148","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-macos"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/script_hub\/211148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/comments?post=211148"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/media\/142119"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/media?parent=211148"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/operating_system?post=211148"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/sv\/wp-json\/wp\/v2\/use_cases?post=211148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}