PowerShell:在没有管理员身份的情况下在目标机器上创建本地用户帐户

PowerShell: Create local user account on target machine without beeing administrator

我尝试在远程计算机上创建本地用户帐户。为了连接 PowerShell 会话,我在目标机器上使用本地用户。此用户不是本地管理员组的一部分,但它是已被授予对默认 PowerShell 会话配置的完全权限的本地组的一部分。目标计算机不属于域。

目标计算机上的文件夹创建正常,所以我确定用户可以成功地 运行 本地 PowerShell 命令。但是 ADSI 命令失败了。我猜是因为它需要 运行 具有本地管理员权限。知道如何在不使用本地管理员帐户远程访问的情况下解决这种情况吗?

脚本:

$cred = IMPORT-CLIXML C:\temp\credentials.xml
$mySession = New-PSSession -ComputerName $targetMachine -Credential $cred
Invoke-Command -Session $mySession -ScriptBlock {
    New-Item -Path "c:\test" -ItemType Directory
    $cn = [ADSI]"WinNT://${env:Computername}"
    $userObject = $cn.Create("User","testUser")
}

如果我将用于远程处理的本地用户添加到管理员组,一切正常。但我想避免使用管理员帐户以使其更安全。

远程执行可以,但另一端的代码 运行 已损坏

$computer = [ADSI]"WinNT://$env:computername,computer"
$newuser = $computer.Create("user", "NewUser1")
$newuser.SetPassword("Password1")
$newuser.SetInfo()

这将创建一个新的本地用户,因此只需 运行 远程计算机上的此代码。

无论您是在本地还是在通过 PowerShell 远程处理的远程计算机上,非管理员帐户都无法创建新用户帐户。

所以问题不在于没有添加用户的PowerShell cmdlet,ADSInet user都可以,但你必须是管理员。

我尝试以普通用户身份远程登录,然后在远程计算机上以管理员身份执行提升的命令。 Start-Processpsexec.exe 都不起作用。

可能有第三方工具可以执行此操作,但您必须向他们提供用户名和密码。

使用 JEA toolkit 似乎是最干净的方法,但它有一点学习曲线。