मेरे पास Powershell में एक उदाहरण क्वेरी है;

Get-AzureRmDisk -ResourceGroupName $resourceGroupName | 
Format-Table -Property Name, Managed By

नतीजा

Name      : OsDisk_1_dfa60a
ManagedBy : /subscriptions/resourceGroups/Company/Microsoft.Compute/vms/Server1

प्रॉपर्टी द्वारा प्रबंधित के लिए आउटपुट बहुत लंबा है। मैं इसे अंतिम / (फॉरवर्ड स्लैश) के बाद के पात्रों के लिए छोटा करना चाहता हूं इच्छित परिणाम

Name      : OsDisk_1_dfa60a
ManagedBy : Server1

अब तक मैंने "/" की अनुक्रमणिका को गिनने के लिए सबस्ट्रिंग, और अंतिम अनुक्रमणिका का उपयोग करने का प्रयास किया है और वहां सबस्ट्रिंग प्रारंभ करें, फिर प्रबंधितबी संपत्ति स्ट्रिंग की पूरी लंबाई पर सबस्ट्रिंग को समाप्त करें;

Get-AzureRmDisk -ResourceGroupName $resourceGroupName | 
Format-List -Property Name, 
ManagedBy.SubString(ManagedBy.LastIndexOf('/'),ManagedBy.length)

त्रुटियाँ उत्पन्न होती हैं: ManagedBy.LastIndexOf : 'ManagedBy.LastIndexOf' शब्द को cmdlet, फ़ंक्शन, स्क्रिप्ट फ़ाइल के नाम के रूप में मान्यता प्राप्त नहीं है,


समाधान

   Get-AzureRmDisk -ResourceGroupName $resourceGroupName | 
Format-Table -Property Name, 
@{Name='ManagedBy';Expr={$_.ManagedBy.Split('/')[-1]}} 
0
platinums 7 जिंदा 2019, 19:27

2 जवाब

सबसे बढ़िया उत्तर

यह आपको वह देना चाहिए जो आप चाहते हैं ...

Format-List -Property Name, 
@{Name='ManagedBy';Expr={$_.ManagedBy.Split('/')[-1]}}
2
Mike Shepard 7 जिंदा 2019, 20:07

अगर...

$ManagedBy = "/subscriptions/resourceGroups/Company/Microsoft.Compute/vms/Server1"

फिर...

$LastResult = $ManagedBy.Split("/")[$ManagedBy.Split("/").Length - 1]

जो केवल अंतिम मान देता है, इस मामले में Server1 अपने आप में, सरणी में। सरणी 0 (शून्य) की स्थिति से शुरू होती है, इसलिए आपको सरणी के Length के अंत से केवल 1 कदम जाना होगा।

इस मामले में, ManagedBy प्रॉपर्टी को $LastResult के मान के रूप में बदलें, जिसे आप अपने बाकी कोड में शामिल करने में सक्षम होना चाहिए।

0
gravity 7 जिंदा 2019, 19:35