البرمجة

استخراج مستهدفات الاختصارات بفعالية باستخدام PowerShell

في محاولة لفهم مشكلتك وتقديم حلاً فعالاً للحصول على مستهدف الاختصارات دون الانغماس في الروابط، يظهر أن الشيفرة الحالية تستخدم -Recurse عند استرجاع الاختصارات، مما يؤدي إلى الدخول في الروابط والحصول على مستهدفاتها أيضا. لحل هذه المشكلة والحصول فقط على مستهدفات الاختصارات دون الدخول في الروابط، يمكنك استخدام أسلوب مختلف.

في الشيفرة الحالية، يتم استخدام $Shell.CreateShortcut($Shortcut).targetpath للحصول على مستهدف الاختصار. بدلاً من ذلك، يمكنك استخدام خاصية TargetPath المباشرة من الاختصار دون الحاجة إلى استخدام WScript.Shell. فيما يلي تعديل للشيفرة يستخدم هذا النهج:

powershell
#Created By Scott $varLogFile = "E:\Server\GetBriefsTargets.log" $varCSVFile = "E:\Server\GetBriefsTargets.csv" function Get-StartMenuShortcuts { $Shortcuts = Get-ChildItem -Recurse "F:\Connect" -Include *.lnk $Shell = New-Object -ComObject WScript.Shell foreach ($Shortcut in $Shortcuts) { $ShortcutObject = $Shell.CreateShortcut($Shortcut.FullName) $Properties = @{ ShortcutName = $Shortcut.Name ShortcutFull = $Shortcut.FullName ShortcutPath = $Shortcut.DirectoryName Target = $ShortcutObject.TargetPath } New-Object PSObject -Property $Properties } [Runtime.InteropServices.Marshal]::ReleaseComObject($Shell) | Out-Null } $Output = Get-StartMenuShortcuts $Output $Output | Export-Csv -Path $varCSVFile -NoTypeInformation $Output | Out-File -FilePath $varLogFile

باستخدام هذا التعديل، يتم الحصول على مستهدفات الاختصارات مباشرة من خاصية TargetPath دون الحاجة إلى استخدام -Recurse، وبالتالي يتم تجنب دخول الروابط.

المزيد من المعلومات

لفهم السياق بشكل أوسع حول استخدام الشيفرة وكيف يمكن تحسينها، يمكننا النظر إلى بعض النقاط المهمة.

أولاً، يظهر أن الهدف من هذه الشيفرة هو الحصول على مستهدفات اختصارات الملفات في تسلسل مجلدات تحت مجلد “F:\Connect”. الشيفرة تقوم بفحص الملفات ذات الامتداد “.lnk” باستخدام -Recurse لضمان الوصول إلى جميع المجلدات والملفات الفرعية.

تم استخدام كائن WScript.Shell للوصول إلى معلومات الاختصار، ولكن تم اقتراح تعديل لاستخدام خاصية TargetPath مباشرة لتجنب دخول الروابط.

تم استخدام متغيرين $varLogFile و$varCSVFile لتحديد مواقع تسجيل وتصدير النتائج.

بمجرد الحصول على معلومات الاختصارات، تم إخراجها إلى ملف نصي باستخدام Out-File وإلى ملف CSV باستخدام Export-Csv لتوفير سهولة في قراءة البيانات.

يمكن تحسين الشيفرة أكثر عند النظر في الإدارة الأفضل للأخطاء وتسجيل الأحداث باستخدام أساليب أفضل للمعالجة الخطأ. كما يمكن أيضاً إضافة تعليقات إضافية في الشيفرة لشرح الخطوات الرئيسية وتحسين قابلية الصيانة.

زر الذهاب إلى الأعلى