2012-06-06 10 views
9

मैं निम्नलिखित पावरहेल स्क्रिप्ट चलाने की कोशिश कर रहा हूं।पावरहेल LINQ के चयन कमांड के बराबर है?

import-module ActiveDirectory 

$computers = Get-ADComputer -filter * -SearchBase "OU=myOU,DC=vw,DC=local" | select-object name 

Invoke-Command -ComputerName $computers -ScriptBlock {gpupdate /target:Computer} 

मुद्दा $computers नहीं एक string[]-ComputerName की तरह उम्मीद है। यह वास्तव में एक पैरामीटर नाम के साथ ADComputer का ऐरे है।

# Get-ADComputer -filter * -SearchBase "OU=myOU,DC=vw,DC=local" | select-object name | Format-Custom 

class ADComputer 
{ 
    name = PC1 
} 

class ADComputer 
{ 
    name = PC2 
} 

class ADComputer 
{ 
    name = PC3 
} 

नामों के लिए तारों की सरणी पाने का सही तरीका क्या है? अगर मैं सी # में था तो मुझे पता है कि यह

string[] computerNames = computers.Select(computer => computer.name).ToArray(); 

लेकिन मैं सीखना चाहता हूं कि इसे पावरहेल में सही तरीके से कैसे करना है।

उत्तर

12

आप

Select-Object -ExpandProperty Name 

या (शायद सबसे करीब बराबर)

ForEach-Object { $_.Name } 

ध्यान दें कि परिणाम एक श्रृंखला होना चाहिए मजबूर करने के लिए उपयोग कर सकते हैं (उदाहरण के लिए आप अपने Count प्रॉपर्टी तक पहुंच चाहते हैं), आपको @() के साथ अभिव्यक्ति को घेरना चाहिए। अन्यथा परिणाम एक सरणी या एक एकल वस्तु हो सकती है।

+1

धन्यवाद! यही वह था जो मैं याद कर रहा था, यह मुझे जवाब देने के बाद जवाब स्वीकार करेगा। –

संबंधित मुद्दे