Powershell在没有已知本地管理员的情况下重命名计算机

时间:2014-10-09 19:37:25

标签: powershell powershell-v3.0

我正在尝试重命名域中的1000台计算机。问题是,我所拥有的管理帐户确实有权更改域上的名称,但无权访问本地计算机进行更改。在工作站上具有本地管理员权限的唯一帐户是工作站的主要用户。我已经在测试域中对此进行了测试,但它运行良好,但在生产中,由于缺乏权限,下面的代码会失败。

有没有办法运行脚本并获取每台机器的主要用户,然后将其放入下面的-LocalCredential paremeter的变量中?

csv文件只有两个以逗号分隔的字段。旧计算机名称和新计算机名称。

$list = Import-csv C:\temp\named.csv -Header oldcomputer, newcomputer
$domain = "domain.com"
$user = "administrator"

#Don't edit below this point
$password = Read-Host -Prompt "Enter password for $user" -AsSecureString
$username = "$domain\$user"
$credential = New-Object System.Management.Automation.PSCredential($username, $password)

foreach ($machine in $list)
{ Rename-Computer -ComputerName $machine.oldcomputer -NewName $machine.newcomputer -DomainCredential -LocalCredential machinename\someuserhere $credential -force -restart }

1 个答案:

答案 0 :(得分:0)

  • 关于从目标计算机获取信用。我不知道哪种方式可行。我认为这需要黑客攻击。

  • 如下所示的解决方案:

    1. 包含三列的数据库; oldname(varchar),newname(varchar),重命名(boolean)
    2. 然后在用户登录时运行Ps脚本,直到所有计算机都被重命名为
    3. 登录脚本应在用户上下文中运行 - >这意味着该脚本现在可以在admin用户权限下使用Rename-Computer。
    4. 让用户登录时让脚本弄清楚计算机名称
    5. 根据数据库检查派生名称...如果找不到找到的名称,请使用Rename-Computer cmdlet
    6. 通过将布尔值设置为1 / true
    7. 来更新数据库中的元组
    8. 向用户发送消息,并且需要重新启动......
    9. 完成工作

我希望这有帮助......