في محاولة لفهم مشكلتك وتقديم حلاً فعالاً للحصول على مستهدف الاختصارات دون الانغماس في الروابط، يظهر أن الشيفرة الحالية تستخدم -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
لتوفير سهولة في قراءة البيانات.
يمكن تحسين الشيفرة أكثر عند النظر في الإدارة الأفضل للأخطاء وتسجيل الأحداث باستخدام أساليب أفضل للمعالجة الخطأ. كما يمكن أيضاً إضافة تعليقات إضافية في الشيفرة لشرح الخطوات الرئيسية وتحسين قابلية الصيانة.