添加第一个域用户的 PowerShell 脚本 [权限问题]

Posted

技术标签:

【中文标题】添加第一个域用户的 PowerShell 脚本 [权限问题]【英文标题】:PowerShell script to add first domain user [permissions issue] 【发布时间】:2017-11-14 09:47:15 【问题描述】:

我在 Azure 中有一个 SQL Server 2014 VM,它是从 Azure 商店创建的。一旦新 VM 可用,我想添加一个 PowerShell CustomExtension 来设置我的数据库环境。我有权限问题。如果我以本地管理员身份运行下面的 PowerShell 代码,我会收到一条消息,指出找不到 Windows NT 用户或组,因为该本地管理员没有域管理员权限。如果我以域管理员身份运行以下 PowerShell,则该域管理员无权登录 SQL Server,这实际上是我想要完成的任务。

cls
import-module sqlps –DisableNameChecking -Verbose:$false | Out-Null
$sql = "USE [MASTER]
GO
CREATE LOGIN [ABC.PROD\My Group Name] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO"
Invoke-Sqlcmd -Query $sql

如果上面以域管理员身份运行,我会收到此错误

Invoke-Sqlcmd : 用户 'ABC\myadminusername' 登录失败。

如果上面以本地管理员身份运行,我会收到此错误

Invoke-Sqlcmd : Windows NT 用户或组 'ABC.PROD\My Group Name' 不是 成立。再次检查名称。

有没有使用一些方便的 PowerShell 轻松摆脱这个 22 条问题的方法?如果我手动执行此操作,我只需以本地管理员身份登录 SQL Server,添加用户、列出位置并在询问时提供域管理员凭据。但是我看不到任何方法可以为这个 SQL 命令提供这些域管理员凭据。

谢谢你, 大卫

【问题讨论】:

【参考方案1】:

好的,我在写这个问题时实际上发现了这个问题。鉴于问题已经写好了,我想我会继续发布并给出答案,以防这对其他人有所帮助。

问题似乎是我不应该提供完全限定的域名。以下代码在以本地管理员身份运行时有效。我刚刚将“ABC.PROD\My Group Name”更改为“ABC\My Group Name”,并且成功了。

cls
import-module sqlps –DisableNameChecking -Verbose:$false | Out-Null
$sql = "USE [MASTER]
GO
CREATE LOGIN [ABC\My Group Name] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO"
Invoke-Sqlcmd -Query $sql

【讨论】:

以上是关于添加第一个域用户的 PowerShell 脚本 [权限问题]的主要内容,如果未能解决你的问题,请参考以下文章

powershell 轻松更新所有AD用户电子邮件域的脚本

PowerShell 批量添加域用户(Windows 2012 R2)

AD域的账户创建和设置

powershell powershell脚本将用户添加到指定SharePoint网站中的指定组。

Powershell脚本通过注册表将本地用户添加到组件服务中的COM安全设置

如何通过Powershell在域计算机上查询Active Directory而不在客户端计算机上安装RSAT工具