$ item не заполнен. Вы утверждаете, что $ users = $ item.username, но $ item в этот момент равен нулю.
Попробуйте:
$list = Import-csv "PATH"
ForEach ($item in $list) {
$users = $item.Username
$groups = $item.Group
Add-ADPrincipalGroupMembership -Identity $users -MemberOf $groups -Whatif |
Set-ADUser $users -HomeDirectory "Path" -Homedrive H -WhatIf
}
Это в основном говорит: Для каждого элемента в списке используйте синтаксис .username и .group, чтобы заполнить переменную users и groups. Затем выполните команды Add и Set. Помните, что это цикл, который запускается один раз для каждого элемента $ в списке $.
Тестовый код:
$list = Import-csv "PATH"
ForEach ($item in $list) {
$user = $item.Username
$group = $item.Group
Write-Host "$user is in $group"
}
Вам нужен sp_addlinkedserver ()
http://msdn.microsoft.com/en-us/library/ms190479.aspx
Пример:
exec sp_addlinkedserver @server = 'test'
затем
select * from [server].[database].[schema].[table]
В Вашем примере:
select * from [test].[testdb].[dbo].[table]
Чтобы сделать межсерверный запрос, проверьте системную хранимую процедуру: sp_addlinkedserver в справочных файлах.
После того как сервер связан, можно выполнить запрос против него.
Используя Microsoft SQL Server Management Studio можно создать Linked Server
. Сначала установите связь с текущим (локальным) сервером, затем перейдите в Server Objects
> Linked Servers
> контекстное меню> New Linked Server
. В окне New Linked Server
необходимо указать желаемое имя сервера для удаленного сервера, реальное имя сервера или IP-адрес (Источник данных) и учетные данные (страница безопасности).
И растушевка можно выбрать данные из связанного сервера:
select * from [linked_server_name].[database].[schema].[table]
Попытайтесь использовать OPENDATASOURCE, синтаксис похож на это:
select * from OPENDATASOURCE ('SQLNCLI', 'Data Source=192.168.6.69;Initial Catalog=AnotherDatabase;Persist Security Info=True;User ID=sa;Password=AnotherDBPassword;MultipleActiveResultSets=true;' ).HumanResources.Department.MyTable