【发布时间】:2015-08-17 14:55:42
【问题描述】:
这是我的 powershell 模块中的一个 sn-p,它在数据库中创建登录名和用户:
# code omitted which sets default db, language, etc.
$login.Create()
$user = New-Object ("Microsoft.SqlServer.Management.Smo.User") $db, $username
$user.Login = $login.Name
$user.Create()
调用$user.Create() 时引发异常,并显示以下消息:
未找到 Windows NT 用户或组“[域\用户]”。再次检查名称。
但是$login.Create() 执行没有问题,我可以在 SSMS 中看到登录存在。
我想到为什么会抛出这个错误的唯一一件事是,如果我通过 T-SQL 执行此操作,我会编写以下内容:
CREATE USER [domain\user] FROM WINDOWS;
GO
CREATE USER [user] FOR [domain\user];
GO
Question regarding issuing a GO statement after CREATE LOGIN
这是如何在 PowerShell 中实现的?还是我做错了?
【问题讨论】:
-
好奇,应该是
$user.Login = $login? -
不,根据 MSDN,它要求
String而不是Login对象。尝试使用Login对象会引发异常,类似于“未找到重载”。
标签: sql-server powershell smo