Powershell and IBM/Lotus Domino



在过去的几周里,我在Powershell for Domino中编写了9个例程,除了1!

这是RegisterNewUser方法,它执行除电子邮件地址之外的所有操作。如果我通过Domino Administrator设置用户,我会得到所有信息,包括电子邮件地址,即"bob-patz/smallhome"的内部地址。

如果我使用我的代码,这将使用注册过程,但我最终得到的只是内部电子邮件地址"@smallhome"的域部分。

有人知道如何纠正吗?我不认为powershell以任何形式使用@formula语言,所以我认为我需要在文档或数据库中找到正确的列,并以某种方式将全名附加在其中。

有人可以帮忙吗?

问候标记

<#TOP TIP: THIS MUST RUN UNDER POWERSHELL (X86), ELSE IT WILL NOT WORK!!

这个Powershell函数是(我自己(Mark Baker在2020年3月创建的,名为"a",只是为了看看我是否能解开神秘感一些Domino数据库结构,在运行了少量代码并在某些部分使用了GetMember之后查看在线代码片段,阅读我从IBM获得的一些在线信息下面的函数创建一个新的Lotus Notes用户。

#原始代码:31/03/2020由MBaker

大量的工作测试和诊断不同的设置和值,甚至让我开始工作,截至2020年4月8日,我只需要为每个人设置正确的电子邮件地址。

#以下是如何使用此功能:

New DominoUserRegistration"hazell"C:\Program Files\IBM\Lotus\Notes\Data\ids\people\dhazell.id"CN=Dom-01/O=Smallhome"Daniel""swindon"Work"comment"mail\dhazell"""password"176"dhazell">

该功能的主要用途是连接到IBMDominoServer并创建一个新的lotusnotes用户。

>

Function New-DominoUserRegistration {
[cmdletbinding()]
param (
[parameter(Position=0,Mandatory=$true,ValueFromPipeline=$True)][string]$lastname,
[parameter(Position=1,Mandatory=$true,ValueFromPipeline=$True)][string]$Useridfile,
[parameter(Position=2,Mandatory=$true,ValueFromPipeline=$True)][string]$mailserver,
[parameter(Position=3,Mandatory=$true,ValueFromPipeline=$True)][string]$firstname,
[parameter(Position=4,Mandatory=$false,ValueFromPipeline=$True)][string]$middle,
[parameter(Position=5,Mandatory=$true,ValueFromPipeline=$True)][string]$certpw,
[parameter(Position=6,Mandatory=$true,ValueFromPipeline=$True)][string]$location,
[parameter(Position=7,Mandatory=$true,ValueFromPipeline=$True)][string]$comment,
[parameter(Position=8,Mandatory=$true,ValueFromPipeline=$True)][string]$maildbpath,
[parameter(Position=9,Mandatory=$true,ValueFromPipeline=$True)][string]$fwddomain,
[parameter(Position=10,Mandatory=$true,ValueFromPipeline=$True)][string]$userpw,
[parameter(Position=11,Mandatory=$true,ValueFromPipeline=$True)][int]$usertype,
[parameter(Position=12,Mandatory=$true,ValueFromPipeline=$True)][string]$ShortName
)
cls
# Create Lotus Notes Object
$DomSession = New-Object -ComObject Lotus.NotesSession
# Initialize Lotus Notes Object
# "It'll use your open notes session and authentication Details"
$DomSession.Initialize()
# Use Method from Objects returned in variable $domsession one of which is CreateAdministrationProcess which
# takes a Server as input
$adminProcess = $Domsession.CreateRegistration()
$expiration = (Get-Date).adddays(1095)
$adminprocess.certifieridfile="C:Program Files (x86)IBMLotusNotesDataidscert.id"
$adminprocess.Expiration =$expiration
#$adminprocess.RegistrationLog ="C:program files (x86)IBMlotusnotesdatareglog.nsf"
#[int]$adminProcess.MinPasswordLength=5
$adminprocess.RegistrationServer="Dom-01/smallhome"
$adminprocess.UpdateAddressBook=$true
$adminProcess.GroupList="Test4"
#$adminProcess.CreateMailDb=$true
#[int]$adminProcess.MailQuotaSizeLimit="100"
#[int]$adminProcess.MailQuotaWarningThreshold="90"
$adminProcess.PolicyName="/Registration_Settings"
$adminProcess.ShortName=$ShortName
[int]$adminProcess.MailOwnerAccess=2
$adminProcess.MailACLManager="LocalDomainAdmins"
$adminProcess.MailInternetAddress="$ShortName"+"@smallhome.local"
$adminProcess.MailTemplateName="Mail85.ntf"
$Notesid=$adminprocess.RegisterNewUser($lastname,$Useridfile,$mailserver,$firstname,$middle,$certpw,$location,$comment,$maildbpath,$fwddomain,$userpw,$usertype)
}
New-DominoUserRegistration "archer" "C:Program Files (x86)IBMLotusNotesDataidspeoplebarcher.id" "CN=Dom-01/O=Smallhome" "basil" "" "swindon" "Work" "comment" "mailbarcher" " " "password" 176 "barcher"
[![enter image description here][1]][1]

[1]: https://i.stack.imgur.com/2Wamq.png

我现在有了答案,这来自另一个板上的其他人:行[parameter(Position=9,Mandatory=$true,ValueFromPipeline=$true(][string]$fwddmain,

需要在[string]$fwddmain之前插入[AllowEmptyString((],并且输入字段为"并且需要为"。$fwddmain似乎对内部电子邮件地址名称有影响,即:"bob patz/smallhome"。

我已经测试过了,它显示在人们的视图中,而且我现在可以向其他用户和自己发送电子邮件!

问题解决了。当做标记

最新更新