gpt4 book ai didi

powershell - Lotusscript 删除用户并批准

转载 作者:行者123 更新时间:2023-12-03 01:04:00 25 4
gpt4 key购买 nike

我最近不得不编写一个脚本来删除笔记用户,并发现缺少有关删除请求批准过程的文档。

在下面的回答中,您可以找到我的代码以及有关该过程的一些解释以及其中的一些怪癖。

如果您可以改进我的答案,请随时这样做。

最佳答案

所以,首先是 link关于 deleteUser 的文档NotesAdministrationProcess 的方法我们将用来删除我们的用户的类。

查看文档这应该非常简单,但是使用段落提到它会触发其他操作。现在,如果你不知道像我这样的笔记,你会认为这些 Action 会立即触发。就像 DJT 会说的:错了!伤心!

deleteUser 方法通过间隔执行的管理进程删除用户(除非您将 immediate 标志设置为 true)。这些时间间隔在 Domino Admin Client 下配置
Configuration->Server->%SERVERDOC%>Server Tasks->Administration Process -> normal request interval
默认值为 60 分钟。

接下来要知道的是,删除邮件文件等某些操作需要批准(我假设这也是可配置的,但这只是一个猜测)。
NotesAdministrationProcess也有不同的.Approve*方法包括ApproveMailFileDeletion它将 noteID 作为参数 ( Link to docs )。

如果您阅读 deleteUser仔细阅读文档,您会注意到这些方法也返回一个 noteID。如果您尝试将此 ID 与 ApproveMailFileDeletion 一起使用您将收到以下错误:

Invalid Approval Request note.

正如您在这一点上所期望的那样,这是错误的 ID。删除过程有多个步骤,它们都有自己的 ID,直到现在我还没有找到一种方法来使用 deleteUser 返回的 ID 来获取这些步骤。

所以这里是删除的代码:
#create session, this is documented pretty well
$user = "CN=Test User/O=NotesTest"
$server = "CN=WIN-SBPV9BSJEKJ/O=NotesTest"
$session = New-Object -ComObject Lotus.NotesSession
$session.initialize($sessionUserIdFilePassword)
$adminProcess = $session.CreateAdministrationProcess($server)

#delete user for parameters see docs
$noteID = $adminProcess.DeleteUser($user, $immediate, $mailfileAction, $denyGroup)

这就是我如何找到要批准的相关请求(为了简单起见,没有错误处理等)(如果您一次性完成所有这些,请添加一个 sleep 计时器以通过执行间隔):
#get all pending requests
$db = $session.GetDatabase($server,"admin4.nsf",$false)
$appView = $db.GetView("Pending Administrator Approval")

$doc = $appView.GetFirstDocument()

#loop through requests to find request pertaining to current user and action, then approve
while($doc -ne $null){
$requestTargetAccountDN = $doc.Items.Get(4).Text #4= ProxyNameList, contains DN of account
$requestTargetDbPath = $doc.Items.Get(20) #20= ProxyDatabasePath contains mailpath (mail/shortname)

if($requestTargetAccountDN -eq $user){
if($doc.ColumnValues.Get(5) -eq "Approve Mail File Deletion"){
$adminProcess.ApproveMailFileDeletion($doc.NoteID)
}
}

$doc = $appView.GetNextDocument($doc)
}

关于powershell - Lotusscript 删除用户并批准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51949392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com