Windows 调用RESTAPI方法更新本地管理员密码

Windows 调用RESTAPI方法更新本地管理员密码,windows,rest,powershell,scripting,active-directory,Windows,Rest,Powershell,Scripting,Active Directory,我必须使用PowerShell为Active Directory编写迁移脚本。 此脚本将更新存储在KeePass的password server中的服务器本地管理员的密码 首先,我使用Windows登录凭据登录KeePass,然后搜索需要更新密码的服务器 因此,跳过上述功能的脚本,我将从生成密码开始: 函数生成密码{ $alphabets=“abcdefghijklmnopqstuvxyz1234567890abcdefghijklmnopqrstuvxyz!@#%^” $char=for($i

我必须使用PowerShell为Active Directory编写迁移脚本。 此脚本将更新存储在KeePass的password server中的服务器本地管理员的密码

首先,我使用Windows登录凭据登录KeePass,然后搜索需要更新密码的服务器

因此,跳过上述功能的脚本,我将从生成密码开始:

函数生成密码{
$alphabets=“abcdefghijklmnopqstuvxyz1234567890abcdefghijklmnopqrstuvxyz!@#%^”
$char=for($i=0;$i-lt$alphabets.Length;$i++){$alphabets[$i]}
对于($i=1;$i-le 16;$i++){
写入主机-NoNewline$(获取随机$char)
如果($i-eq 16){Write Host`n}
}
}
$pass=生成密码
从上面的脚本生成密码后,我想更新我搜索的服务器的密码

例如:查找的附件

我想通过函数
Generate password
更改上述搜索服务器的密码

为此,我使用了:


我想我在这里的语法上犯了一些错误。如何将生成的密码(即,
$pass
传递给调用的REST方法?

您引用的文档说明:

因此,您可能需要这样做:

$CredentialID = '2b45438a-2f4a-4d96-9ba9-058ea54252fb'
$uri  = "$KeepassURL/api/v4/rest/credential/$CredentialID"
$type = 'application/json'
$body = @{
    'Id'       = $CredentialID
    'Name'     = 'Credential 0'
    'Username' = 'Credential 0'
    'Password' = $pass
    ...
}

Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -Body $body -ContentType $type
假设您正在通过
$headers
传递已获取的授权令牌


但是,未经测试,我不太确定您是否需要正文中的所有键/值对,还是只需要相关的键/值对,因此您需要对其进行一些处理。

什么是“服务器详细信息”?什么东西没有按你期望的方式工作?服务器详细信息是指用户名=服务器名称(01)及其旁边的密码。请找到所附的图片!嗯。。。不,我没有。嗨,安斯加维切斯。对不起,您找不到附件中的图像。我编辑了这个问题。现在,您可以将“服务器详细信息”链接作为附加图像查看。谢谢谢谢你的回答。变量“$CredentialID”需要GUID才能进一步执行脚本。但是客户端(KeePass)只显示机器的“UUID”,而不显示GUID。我需要另一个脚本才能首先访问服务器的GUID吗?@PranjalKaushik您不接受此答案的具体原因是什么? PUT credential/:id ** Update a credential ** Method PUT Requires Authentication? Yes
Parameters id GUID for credential
Input type Credential Result type None Example Credential (JSON)
{ Id: "2b45438a-2f4a-4d96-9ba9-058ea54252fb" Name: "Credential 0" Username: "Credential 0" Password: null Url: "" Notes: "" GroupId: "cfb2c08e-e990-43b7-99d1-c8e23e0ae00e" Created: "2013-11-18T10:14:27.8218898-07:00" Modified: "2015-06-01T13:26:12.336084-06:00" Expires: null ... }
$CredentialID = '2b45438a-2f4a-4d96-9ba9-058ea54252fb'
$uri  = "$KeepassURL/api/v4/rest/credential/$CredentialID"
$type = 'application/json'
$body = @{
    'Id'       = $CredentialID
    'Name'     = 'Credential 0'
    'Username' = 'Credential 0'
    'Password' = $pass
    ...
}

Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -Body $body -ContentType $type