2016-04-12 9 views
2

私はcsvにいくつかの広告属性をエクスポートするスクリプトを持っています 私はPsObjectの 'initials'属性の最後の3文字を持っていますが、これで時間を費やした... 私を助けてくれますか?Powershell - PsObjectのAD属性から最後の3文字を取得

エラー:

*Method invocation failed because [Microsoft.ActiveDirectory.Management.ADUser] doesn't contain a method named 'substring'. 
At C:\scripts\ExtractDWH\Untitled2.ps1:15 char:26 
+     "Test" = $_.substring <<<< ($_.initials.length - 3, 3) 
    + CategoryInfo   : InvalidOperation: (substring:String) [], RuntimeException 
    + FullyQualifiedErrorId : MethodNotFound* 

コード:

$output = 'c:\scripts\ExtractDWH\consultants_test.csv' 
$users = Get-ADUser -Filter * -SearchBase "ou=Rennes,ou=Consultants,ou=Utilisateurs,ou=FedFinance,dc=dfedinterim,dc=fr" -  Properties * | ? { ($_.initials -notlike 'IC*') -and ($_.initials -notlike 'IM*') -and ($_.initials -ne $null) } 
     fileIn | % { 
     $users | % { 
      New-Object psobject -Property @{ 
       "ID" = $_.initials 
       "Last 3 strings ID" = $_.substring($_.initials.length - 3, 3) 
       "Centre Imputation" = $_.extensionAttribute10 
       "Date Entrée" = $_.extensionAttribute9 
       # The line below does not work     
       "Test" = $_.substring($_.initials.length - 3, 3) 
      } 
     } 
    } | Select-Object ID, 'Centre Imputation', 'Date Entrée', 'Test' 
| Export-CSV $output -Delimiter ';' -Encoding "UTF8" -NoTypeInformation ` 

ありがとうございます!これに

"Last 3 strings ID" = $_.substring($_.initials.length - 3, 3) 

:この

+0

注意:-properties *は、存在するすべての単一の広告属性を取得するため実際には良い考えではありません。代わりに、次のようなプロパティを挙げてください。 '-properties Initials、extensionAttribute10、extensionAttribute9' – Kiran

+0

私は* thanksを修正しました – olivier

答えて

2

変更

"Last 3 strings ID" = $_.initials.substring($_.initials.length -3, 3) 
+0

これも完璧です!ありがとうございます – olivier

1

Avshalomはあなたにエラーを示しました。最後の3文字には、次の文字を使用することもできます。

"Test" = $_.initials[-3 .. -1] -join '' 
+0

'' Test "[ - 3 .. -1] -join" "'のように配列を取り除くべきでしょうか? – Martin

+0

はい、あなたは正しいです:-) –

+0

それは完璧に動作します!ありがとう – olivier