使用 ADSI 凭据重置远程本地计算机帐户密码
Using credentials with ADSI to reset a remote local computer account password
尝试通过 PowerShell 使用显式凭据更改远程 Windows 密码。
我已经能够使用 ADSI 界面完成这项工作,但该脚本 运行 来自非提升帐户,因此没有权限。我需要向用户询问提升的帐户,然后在建立连接时使用该帐户。
这个有效:
$server = "Server1"
$adminID = "Administrator"
$Password = "NewPassword"
$OldPassword = "OldPassword"
([ADSI] "WinNT://$server/$adminID").SetPassword($Password)
但是,我还需要包括帐户的旧密码,以便我有权进行更改。
有没有办法将 $AdminD
与 $OldPassword
连接到服务器,然后将其更改为 $NewPassword
?
找到解决方案。
$credential = New-Object System.Management.Automation.PSCredential($($server + "\" +$AdminID),$Oldpassword)
$pth = "\$($server)\admin$"
write-host "Making connection to server with creds." -nonewline
# test for the drive, and remove if present.
if (.root)))
{
remove-PSDrive -Name X
write-host "Drive unmapped," -nonewline
}
New-PSDrive -Name X -PSProvider filesystem -Root $pth -Credential $credential | out-null
write-host " PS Drive established.. " -nonewline
([ADSI] "WinNT://$server/$adminID").SetPassword($Password)
通过首先连接到服务器,第二次重置密码调用使用已经建立的相同凭据。
完成后,我调用以下命令断开驱动器..
# test for the drive, and remove if present.
if (.root)))
{
remove-PSDrive -Name X
write-host "Drive unmapped."
}
如果有更好的方法,我很想知道它是什么。但这至少看起来有效。
尝试通过 PowerShell 使用显式凭据更改远程 Windows 密码。
我已经能够使用 ADSI 界面完成这项工作,但该脚本 运行 来自非提升帐户,因此没有权限。我需要向用户询问提升的帐户,然后在建立连接时使用该帐户。
这个有效:
$server = "Server1"
$adminID = "Administrator"
$Password = "NewPassword"
$OldPassword = "OldPassword"
([ADSI] "WinNT://$server/$adminID").SetPassword($Password)
但是,我还需要包括帐户的旧密码,以便我有权进行更改。
有没有办法将 $AdminD
与 $OldPassword
连接到服务器,然后将其更改为 $NewPassword
?
找到解决方案。
$credential = New-Object System.Management.Automation.PSCredential($($server + "\" +$AdminID),$Oldpassword)
$pth = "\$($server)\admin$"
write-host "Making connection to server with creds." -nonewline
# test for the drive, and remove if present.
if (.root)))
{
remove-PSDrive -Name X
write-host "Drive unmapped," -nonewline
}
New-PSDrive -Name X -PSProvider filesystem -Root $pth -Credential $credential | out-null
write-host " PS Drive established.. " -nonewline
([ADSI] "WinNT://$server/$adminID").SetPassword($Password)
通过首先连接到服务器,第二次重置密码调用使用已经建立的相同凭据。
完成后,我调用以下命令断开驱动器..
# test for the drive, and remove if present.
if (.root)))
{
remove-PSDrive -Name X
write-host "Drive unmapped."
}
如果有更好的方法,我很想知道它是什么。但这至少看起来有效。