2017-04-06 24 views
0

我有一個讓我在Active Directory對象的canocical名稱的變量:出字符串一個cmdlet的結果,並操縱它在PowerShell中

$LastOU = Get-ADOrganizationalUnit -Filter * -Properties * | 
      Sort { $_.WhenCreated } -Descending | 
      Select -First 1 {$_.CanonicalName} | 
      Out-String 

如果我運行命令Write-Host $LastOU它indeeds給我結果我的預期:

@{$_.CanonicalName=domain.local/Microsoft/Userz}

我試圖現在要做的就是操縱字符串只有

Microsoft

已選中。

我用Out-String方法將命令的結果作爲字符串。

之後,我所做的是使用.Split()功能來操縱我的結果。

我這樣做就像$CompName = $LastOU.Split(...)

但是我得到的錯誤:

Method invocation failed because [Selected.Microsoft.ActiveDirectory.Management.ADOrganizationalUnit] does not contain a method named 'Split'.

這意味着,我的結果不是一個字符串?但是我的命令有什麼問題?

+1

' - 首先選擇1 {$ _ CanonicalName} | Out-String' - >'Select -First 1 -Expand CanonicalName' –

+1

'Get-Member -InputObject $ LastOU'會告訴你變量的類型以及可用的方法和成員。此外,在某些具有「自動」字符串表示的情況下,您可以使用'-split'運算符來操作它,而不是試圖使用可能不存在的'.split()'方法。 –

+0

非常感謝您的意見, –

回答

2

更改您的選擇語句以包含-ExpandProperty,它應該只給你返回的字符串而不是一個對象。

更改此

Select -First 1 {$_.CanonicalName} |Out-String 

這個

Select -ExpandProperty CanonicalName -first 1 
+0

謝謝你的工作 –