Powershell和IBMLotus Domino。

问题描述 投票:1回答:1

在过去的几周里,我在Powershell中为Domino编写了9个例程,它们似乎都能完成我所需要的任务,只有1个例外!这个例程是RegisterNewUser方法,它能完成除了Email地址以外的所有任务。

这就是RegisterNewUser方法,除了Email地址之外,它可以做所有的事情。如果我通过Domino管理员设置一个用户,我得到了所有的东西,包括电子邮件地址,即内部地址是'bob patzsmallhome'。

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

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

有没有人可以帮助我?

问候马克

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

这个Powershell函数是由(我自己)Mark Baker在2020年3月创建的,作为 "一个",只是为了看看我是否可以去掉Domino数据库stucture的一些神秘感,在运行了一些简短的代码和使用Get-Member后,在网上看了一些代码片段,并阅读了IBM的一些在线信息,我想出了下面的函数来创建一个新的Lotus Notes用户。

#

原始代码。31032020 by MBaker

经过大量的工作测试和诊断,不同的设置和值最终导致我得到这个工作,在08042020,我只需要解决设置正确的电子邮件地址的设置,每个人。

#

这就是这个功能的使用方法。

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

该功能的主要用途是连接到IBM Domino服务器并创建一个新的lotus notes用户。

&gt.我在过去的几周里用Powershell为Domino编写了9个例程,它们似乎都能满足我的需要。

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)\IBM\Lotus\Notes\Data\ids\cert.id"
$adminprocess.Expiration =$expiration
#$adminprocess.RegistrationLog ="C:\program files (x86)\IBM\lotus\notes\data\reglog.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)\IBM\Lotus\Notes\Data\ids\people\barcher.id" "CN=Dom-01/O=Smallhome" "basil" "" "swindon" "Work" "comment" "mail\barcher" " " "password" 176 "barcher"
[![enter image description here][1]][1]


  [1]: https://i.stack.imgur.com/2Wamq.png
windows lotus-domino
1个回答
0
投票

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

需要在[string]$fwddomain之前插入[AllowEmptyString()],输入字段是"",需要是""。看来$fwddomain对内部邮件地址名有影响,即:'bob patzsmallhome'。

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

问题解决了!RegardsMark

© www.soinside.com 2019 - 2024. All rights reserved.