إذا كنت أحد مسؤولي تكنولوجيا المعلومات، فمن المحتمل جدًا أن تضطر إلى تثبيت برامج للآخرين. تعد إدارة نقاط النهاية من الأعمال التجارية الكبيرة هذه الأيام، كما أن صيانة البرامج عبر مئات أو آلاف أجهزة الكمبيوتر أمر شائع في المؤسسات الكبيرة. ومع ذلك، فإن الأعمال الكبيرة عادة ما تعني مبلغًا كبيرًا.
ماذا لو كنت في منظمة ذات ميزانية قليلة أو معدومة؟ ربما تكون أنت أو أحد أفراد فريقك قد بدأت في استخدام PowerShell لأتمتة المهام المختلفة؟ في هذه الحالة، قد يكون استخدام PowerShell لإدارة البرامج عبر العديد من نقاط النهاية في وقت واحد مفيدًا.
تعد لغة البرمجة النصية PowerShell لغة مرنة قوية يبدو أنها تتعامل مع أي شيء تقريبًا في بيئة Windows. يعد العمل مع البرامج الموجودة على أجهزة الكمبيوتر البعيدة أمرًا سهلاً!
ستتعرف في هذه المقالة على كيفية استخدام PowerShell لإنشاء تقارير البرامج المثبتة. على الرغم من أن PowerShell قادر على تثبيت البرامج أيضًا، إلا أنك ستركز على الاستعلام عن البرامج التي تم تثبيتها عبر وسائل أخرى.
حيث يتم تسجيل البرنامج
مصطلح “البرمجيات” هو مصطلح غامض، وخاصة على نظام التشغيل Windows. عندما يتم تثبيت حزمة برامج، يكون الأمر متروكًا تمامًا لمطور البرنامج لتحديد التغييرات التي تطرأ على جهاز الكمبيوتر الخاص بالمستخدم. يقوم مثبتو البرامج بنسخ الملفات وإنشاء مفاتيح التسجيل وإضافة مثيلات WMI والمزيد. إن مفتاح إنشاء تقرير دقيق لمخزون البرامج، بغض النظر عن الطريقة، هو فهم ما يجب البحث عنه أولاً.
على الرغم من أن البرامج المثبتة مسجلة في WMI، إلا أن الطريقة الأكثر موثوقية للعثور على هذه المعلومات هي استخدام السجل.
يقوم كل إصدار حديث من Windows بتخزين معلومات البرامج المثبتة في مفاتيح التسجيل الثلاثة أدناه. اعتمادًا على كيفية تثبيت البرنامج، يتم تخزينه دائمًا كمفتاح تسجيل ضمن أحد هذه المفاتيح الأصلية.
- HKEY_LOCAL_MACHINE (مسار 32 بت)
- HKEY_LOCAL_MACHINE6432العقدة (مسار 64 بت)
- HKEY_CURRENT_USER (لكل ملف تعريف مستخدم)
يتم عادةً تسمية كل مفتاح تسجيل تابع في هذه المفاتيح الأصلية باسم المعرف الفريد العمومي للبرنامج (GUID). داخل هذا المفتاح، يمكنك العثور على قيم التسجيل لعنوان البرنامج وإصداره والمزيد.
متطلبات الكمبيوتر عن بعد
لاستخدام الكود الموضح في هذه المقالة، أفترض أن PowerShell Remoting ممكّن ومتاح على أجهزة الكمبيوتر البعيدة لديك. يمكنك اختبار PowerShell Remoting من خلال محاولة تنفيذ أمر بسيط مثل
Invoke-Command -ComputerName REMOTEPCNAME -ScriptBlock {1}
. إذا فشل ذلك، فلن تعمل بقية المعلومات الموضحة في هذه المقالة أيضًا.
لمنع إعادة إنشاء العجلة وبناء أداة PowerShell الخاصة بك، فلنستخدم أداة موجودة. لقد قمت بإنشاء وحدة PowerShell تسمى PSSoftware منذ فترة والتي تحل هذه المشكلة جيدًا.
أولاً، في وحدة تحكم PowerShell الإدارية، قم بتنزيل وتثبيت وحدة PSSoftware PowerShell من معرض PowerShell عن طريق تشغيل
Install-Module PSSoftware
.
بمجرد تثبيت الوحدة، قم بفحص الأوامر المتاحة لك عن طريق التشغيل
Get-Command -Module PSSoftware -Noun Software
. سترى بعض الأوامر مثل
Get-InstalledSoftware
,
Install-Software
،و
Remove-Software
. هذه الأوامر هي الوظائف الرئيسية لإدارة البرامج. في هذه المقالة أركز على
Get-InstalledSoftware
وظيفة.
اختبر
Get-InstalledSoftware
الأمر عن طريق تشغيله محليًا أولاً بدون أي معلمات. ترى على الفور العديد من حزم البرامج المختلفة تطير.
PS51> Get-InstalledSoftwareModifyPath : MsiExec.exe /I{4CF4DB38-0692-4A5B-BCE8-1667C51E8416}
VersionMajor : 14
Version : 14.0.500.272
sEstimatedSize2 : 732
URLInfoAbout :
NoRepair : 1
InstallSource : C:ProgramDataPackage Cache{4CF4DB38-0692-4A5B-BCE8-1667C51E8416}v14.0.500.272x64
Contact :
Size :
InstallLocation :
VersionMinor : 0
SystemComponent : 1
EstimatedSize : 1464
URLUpdateInfo :
InstallDate : 20170716
Comments :
WindowsInstaller : 1
HelpLink : https:
UninstallString : MsiExec.exe /I{4CF4DB38-0692-4A5B-BCE8-1667C51E8416}
GUID : {4CF4DB38-0692-4A5B-BCE8-1667C51E8416}
HelpTelephone :
Readme : Placeholder for ARP readme in case of no UI
Publisher : Microsoft Corporation
Language : 1033
Name : SQL Server vNext CTP2.0 XEvent
AuthorizedCDFPrefix :
PSComputerName : MACWINVM
RunspaceId : da83572b-150b-43b6-923a-14e516a77ba3
يمكنك قصر هذا الإخراج على العنوان والإصدار فقط باستخدام ملف Select-Object
cmdlet.
PS51> Get-InstalledSoftware | Select-Object -Property Name,Version
للاستعلام عن كمبيوتر بعيد، استخدم ComputerName
المعلمة. يتم إرجاع نفس حزم البرامج.
ربما تفضل عدم رؤية جميع البرامج المثبتة ولكن فقط البرامج المطابقة لعنوان معين. يمكنك تصفية هذه المعلومات باستخدام Where-Object
cmdlet. يعثر المثال التالي على كافة البرامج التي تبدأ بـ SQL على الكمبيوتر البعيد.
PS51> Get-InstalledSoftware | Where-Object {$_.Name -like 'SQL*'} | Select-Object -Property Name,Version
ملخص
بمجرد أن تفهم مكان تخزين البرامج المثبتة وتتمكن من الوصول إليها باستخدام PowerShell، يصبح العالم هو محارتك. من هنا، يمكنك توسيع هذا الرمز بسرعة ليشمل أجهزة كمبيوتر متعددة، والبحث عن العديد من الحزم والمزيد.
يعد استخدام وحدات PowerShell المجتمعية المجانية طريقة رائعة لإنشاء تقارير مخترعي البرامج بسعر رخيص!
(العلامات للترجمة)مايكروسوفت