首页 > 解决方案 > Powershell 和 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 Ba​​ker 于 2020 年 3 月创建为“a”,只是为了看看我是否可以在运行一小段代码并在其中的某些部分使用 Get-Member 之后揭开 Domino 数据库结构的神秘面纱并查看在线代码片段并阅读 IBM 的一些在线信息,我提出了以下功能来创建新的 Lotus Notes 用户。

#

原始代码:31/03/2020 by MBaker

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

#

这是如何使用此功能:

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

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

>

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

标签: windowslotus-domino

解决方案


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

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

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

问题解决了。问候马克


推荐阅读