Использование PowerShell для создания CSV с несколькими разделителями - PullRequest
0 голосов
/ 17 ноября 2010

Я признаю, что я - PowerShell n00b, но мне нужно создать в рекламе 12k контактов с поддержкой почты на основе информации ldap из директории novell. я пытался манипулировать следующим кодом, чтобы удовлетворить потребности, но я застрял, пытаясь разделить атрибут «mail» объекта пользователя:

$gwise = "GWISE"
$comma = ","
$dot = "."
$space = " "
$gwcontacts = "C`:\Windows\System32\adfind.exe `-hh nds.groupwise.local `-simple `-s subtree `-nodn `-csv empty `-csvnoq `-b `"OU`=people,OU`=GroupWise,O`=local`" `-f mail=* mail givenName sn | findstr /i /c`:`"@`" | sort" | cmd | ConvertFrom-Csv -UseCulture -Header $header

alisdair показала мне, как сделать замену в powershell, но теперь я испытываю трудности с выяснением, как разобрать атрибут mail, чтобы я мог использовать только строку слева от символа @:

$gwcontacts | ForEach-Object { New-MailContact -Name ($_.mail.split('@') + $dot + $gwise) -Alias ($_.mail.split('@')) -DisplayName ($_.sn + $comma + $space+ $_.givenName) -ExternalEmailAddress ($_.mail.Replace('GroupWise.local','example.com')) -FirstName $_.givenName -LastName $_.sn -OrganizationalUnit 'exchange.local/contacts' -PrimarySmtpAddress ($_.mail.replace('GroupWise.local','example.com')) }

Invoke-Command: невозможно связать параметр 'Alias' с целью. Параметр исключения «Псевдоним»: «Выражение свойства« TESTUSER GroupWise.local »недопустимо. Допустимые значения: строки, образованные символами от A до Z (прописными или строчными буквами), цифры от 0 до 9,!, #, $, %, &, ', *, +, -, /, =,?, ^, _, , {, |, } or ~. One or more periods may be embedded in an alias, but each period should be preceded and followed by at least one of the other characters. Unicode characters from U+00A1 to U+00FF are also valid in an alias, but they will be mapped to a best-fit US-ASCII string in the e-mail address, which is generated from such an alias." At C:\Users\Administrator\AppData\Roaming\Microsoft\Exchange\RemotePowerShell\ems.exchange.local\ems.exchange.local.psm1:28521 char:29 + $scriptCmd = { & <<<< $script:InvokeCommand + CategoryInfo: WriteError: (:) [New-MailContact], ParameterBindingException + FullyQualifiedErrorId: ParameterBindingFailed, Microsoft.Exchange.Management.RecipientTasks.NewMailContact

Я знаю, что мой синтаксис разделения неверен ... но я потерян. любая помощь приветствуется!

1 Ответ

0 голосов
/ 17 ноября 2010

Я не совсем уверен, что правильно прочитал, но что вы хотите сделать, это взять адрес GroupWise, и для каждого пользователя заменить локальную часть Groupwise адреса соответствующим интернет-доменом?

Чтобы сделать все это в одной строке (при условии, что $ gwaddress является групповым адресом, например user @ local):

$internetaddress = $gwaddress.remove($gwaddress.indexof('@')).insert($gwaddress.indexof('@'),'@mydomain.com')

Приведенный выше код берет групповой адрес, удаляет все с @ и далее, затем добавляет вашдоменное имя от того, где @ было в исходной строке.

В качестве альтернативы, если вы просто хотите разделить групповой адрес на пользователя и домен и построить интернет-адрес другим способом:

$gwuser,$gwdomain=$gwaddress.split('@')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...