سؤال

يبدو أن هذا يجب أن يكون بسيطًا ، لكن PowerShell يفوز معركة أخرى معي. ما عليك سوى الرغبة في إخراج اسم جميع الخدمات التي تعمل على النظام ، ومسارها القابل للتنفيذ ، والأنبوب الذي يمكنني استخدامه للبحث من خلاله مثل أقل.

حتى الآن لدي:

$services = get-WmiObject -query 'select * from win32_service'
foreach($service in $services){$service.Name $service.Pathname} | less

لكن هذا يعطيني "عنصر الأنابيب الفارغ غير مسموح به". يبدو أنني قد توصلت كثيرًا. يخبرني أي شخص كيفية إصلاح هذا ، إما عن طريق الإخراج إلى ملف وسوء المرور به مع VIM ، أو أنبوب إلى الصفحة/أقل/إلخ حتى أتمكن من إجراء فحص سريع (مع عيني لم يكن برمجيًا بعد).

هل كانت مفيدة؟

المحلول

حاول القيام بما يلي

$services | %{ $_.Pathname } | less

تعديل أضف العديد من المسار

$services | %{ "{0} {1}" -f $_.Pathname,$_.Name } | less

نصائح أخرى

إذا كنت تستخدم PowerShell 2.0 ، فقد يعجبك هذا:

gwmi win32_service | select-object Name,PathName | ogv

OGV (الإخراج-GridView) هو cmdlet جديد في 2.0.

get-wmiobject win32_service | select-object name, pathname | more

هذا هو أيضا PowerShell 2.0 وهو قريب من التعليق أعلاه. كنت تحاول فقط استخدام foreach عندما لا تحتاج إلى ذلك في هذه الحالة.

حتى مع Foreach ، كنت على وشك الحصول على إخراج يمكنك العمل معه. كانت الفاصلة في foreach قد أنشأت إخراجًا مثل القائمة ويمكن أن تستخدم الأمر أكثر بدلاً من أقل.

$services = get-WmiObject -query 'select * from win32_service'
foreach($service in $services){$service.Name  $service.Pathname} | more

إليك طريقة أخرى لكتابة هذا البيان نفسه.

get-wmiObject win32_service | foreach {$.name ، $.PathName} | أكثر

هذا لا يزال ليس هو نفسه مثالي الأول ، لكنني أردت أن أوضح لك مدى قربك.

يبدو وكأنه سبب وجيه لاستخدام foreach-object:

$services = get-WmiObject -query 'select * from win32_service'
$services|ForEach-Object {$_|Select-Object Name,Pathname}|less

من فضلك معذرة أثناء خطك:

get-WmiObject -query 'select * from win32_service' |ForEach-Object {$_|Select-Object Name,Pathname}|less

سيقوم Foreach-Object بإرجاع كائن إلى خط الأنابيب بناءً على كائن الإدخال.

أفترض أن أقل هو الاسم المستعار في صنعك لأنني لا يبدو أنني أمتلكه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top