【发布时间】:2011-05-22 18:12:20
【问题描述】:
我正在遍历Microsoft.SqlServer.Management.Smo.Server 对象列表并将它们添加到哈希表中,如下所示:
$instances = Get-Content -Path .\Instances.txt
$scripts = @{}
foreach ($i in $instances)
{
$instance = New-Object Microsoft.SqlServer.Management.Smo.Server $i
foreach($login in $instance.Logins)
{
$scripts.Add($instance.Name, $login.Script())
}
}
到目前为止一切顺利。我现在要做的是将一个字符串附加到哈希表值的末尾。因此,对于 $instance,我想将一个字符串附加到该 $instance 的哈希表值中。我该怎么做?我已经开始这样做了,但我不确定我是否走在正确的轨道上:
foreach ($db in $instance.Databases)
{
foreach ($luser in $db.Users)
{
if(!$luser.IsSystemObject)
{
$scripts.Set_Item ($instance, <what do I add in here?>)
}
}
}
干杯
【问题讨论】:
-
顺便说一句,它不一定是一个 HashTable - 也许
System.Collections.Generic.Dictionary[string,string]会更好? -
Mark:不过,PowerShell 中的泛型有点棘手。大多数时候我会说,如果您不是非常需要它们,请不要使用它们,因为代码实际上不太清楚。
标签: sql-server powershell hashtable smo