当前位置: 首页 > 面试题库 >

使用PowerShell将Windows用户添加到本地SQL Server

罗允晨
2023-03-14
问题内容

我想使用PowerShell将现有的本地用户作为sysadmin添加到SQL Server。经过一些研究,到目前为止,我有以下脚本:

$Username = "JohnDoe"

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null 
$SqlServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "localhost"
$SqlUser = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Login -ArgumentList $SqlServer, "$Username"
$SqlUser.LoginType = 'WindowsUser'
$SqlUser.Create()
$SqlUser.AddToRole('sysadmin')

该用户位于localhost上,它是Users and Administrators组的成员。我收到以下错误消息:

异常调用带有“ 0”参数的“创建”:“对于登录’JohnDoe’创建失败。”在C:\ Users \ LocalAdmin \ Desktop \
try.ps1:7 char:16 + $ SqlUser.Create <<< <()+ CategoryInfo:未指定:(:)
[],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException

带有“ 1”自变量的异常调用“ AddToRole”:“登录’JohnDoe’的添加到角色失败。”在C:\ Users \ LocalAdmin \
Desktop \ try.ps1:8 char:23 + $ SqlUser.AddToRole < <<<(’sysadmin’)+
CategoryInfo:未指定:(:) [],MethodInvocationException +
FullyQualifiedErrorId:DotNetMethodException

带有SQL Server 2008 R2的Windows Server 2008 R2我在做什么错或丢失了什么?

编辑: 根据CB和mortb的建议更新了脚本,但仍无法正常工作。我已经将上面的脚本更新为当前状态,并且错误消息中包含了我现在得到的错误消息。


问题答案:

我没有尝试您的代码。但是,以下示例对我的SQL Express实例很有效。

    $conn = New-Object Microsoft.SqlServer.Management.Common.ServerConnection -ArgumentList $env:ComputerName
$conn.applicationName = "PowerShell SMO"
$conn.ServerInstance = ".\SQLEXPRESS"
$conn.StatementTimeout = 0
$conn.Connect()
$smo = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList $conn
$SqlUser = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Login -ArgumentList $smo,"${env:ComputerName}\JohnDoe"
$SqlUser.LoginType = 'WindowsUser'
$sqlUser.PasswordPolicyEnforced = $false
$SqlUser.Create()


 类似资料:
  • 问题内容: 是否可以通过shell脚本将用户添加到sudoers文件中?我一直在环顾四周,仍然找不到任何东西。 问题答案: 您可以简单地(当然具有提升的特权)直接访问文件: (请注意用户名和第一个之间的制表符) 或者,对于脚本: 然后保存到,然后从终端窗口运行。 要添加多个用户,请将脚本更改为此。 然后,像这样运行脚本(假设您将其另存为): 即,以空格分隔。 要从文件中读取名称: 也应以空格分隔。

  • 我正在远程windows 2012服务器上运行Java代码。服务器将有多个windows用户帐户,如用户X、用户N、用户W等等。 我想在登录到管理员帐户时,在每个帐户上执行特定的代码部分。 是否可能在另一个windows用户帐户上执行一部分代码(即登录到帐户,然后自动注销)? 注意:这与: 如何在Java中获取Windows用户名?-因为我已经知道每个帐户的名称,或者用java创建一个Window

  • 我尝试使用ionic框架,但在通过npm安装ionic时遇到了问题 我尝试使用$ionic,但它总是显示“ionic未被识别为内部或外部命令”错误。然后我发现ionic被添加到C:\usr\local而不是C:\Users{User}\AppData\Roaming\npm。 我使用的是Windows 8.1,我还将C:\用户{用户}\AppData\漫游\npm添加到PATH中并重新启动机器。请

  • 我试图使用Keycloak rest API向特定用户添加客户端级别的角色。我在邮递员尝试这个,但不断得到404找不到。 https://{keycloak url}/auth/admin/realms/acme/users/b62dc517-0dd8-41ad-9d97-f385e507e279/role-mappings/clients/6b1f23b4-6bec-4873-a991-4b7e

  • 我错过了什么?有什么想法吗? 附注。Android Studio 0.8.2

  • 问题内容: 如何通过组名将用户添加到django中的组? 我可以做这个: 我将如何做这样的事情: 问题答案: 使用具有组名称的组模型查找组,然后将用户添加到user_set