2014-10-09 53 views
0

我想重命名域的计算机的1000年。问题是,我拥有的管理帐户有权更改域名,但无权访问本地计算机进行更改。在工作站上具有本地管理员权限的唯一帐户是工作站的主要用户。我已经在一个测试域中测试了它,它完美地工作,但是在生产中,由于缺乏权限,下面的代码失败了。Powershell重命名没有已知本地管理员的计算机

有没有一种方法来运行脚本并获取每台机器的主要用户,然后将其放置到下面的-LocalCredential参数的变量中以便使用?

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 } 
+0

“每台机器的主要用户”是什么意思?通常在一个域中,“Domain Admins”组是每台机器上本地管理员组的成员。您还可以使用组策略在计算机上配置/强制执行A​​dministrators组成员身份。 – 2014-10-09 22:04:57

回答

0
  • 关于从目标计算机获得creds。我不知道一种可能的方式。我认为这将需要黑客入侵。

  • 怎么样的解决方案类似以下内容:

    1. 含三列的数据库; oldname(varchar),newname(varchar),renamed(boolean)
    2. 然后让ps脚本以用户登录的方式运行,直到所有计算机重命名为止
    3. 登录脚本应该在用户上下文中运行 - >表示脚本现在可以在管理员用户权限下使用Rename-Computer。
    4. 有脚本弄清楚计算机的名称,当用户在做一个登录
    5. 检查派生的名称对DB ......如果找到的名称尚未更改,使用重命名,电脑cmdlet的
    6. 更新元组在数据库中,由布尔做了什么用户设置为1 /真
    7. 消息,并且需要重新启动.....
    8. 完成任务

我希望这可以帮助....

相关问题