Comment append à la valeur Powerhell Hashtable?

J'interagis à travers une list d'objects Microsoft.SqlServer.Management.Smo.Server et en les ajoutant à une hashtable comme ceci:

 $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()) } } 

Jusqu'ici tout va bien. Ce que je veux faire maintenant est d'append une string à la fin de la valeur de hachage. Donc, pour une instance $, je veux append une string à la valeur de hachage pour cette instance $. Comment ferais-je cela? J'ai commencé avec ceci, mais je ne suis pas sûr si je suis sur la bonne voie:

 foreach ($db in $instance.Databases) { foreach ($luser in $db.Users) { if(!$luser.IsSystemObject) { $scripts.Set_Item ($instance, <what do I add in here?>) } } } 

À votre santé

 $h= @{} $h.add("Test", "Item") $h; "" $h."Test" += " is changed" $h Name Value ---- ----- Test Item Test Item is changed 

J'irais avec ce code.

 $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[$instance.Name] = @($scripts[$instance.Name]) + $login.Script().ToSsortingng() } } 

.

 foreach ($db in $instance.Databases) { foreach ($luser in $db.Users) { if(!$luser.IsSystemObject) { $scripts[$instance] = @($scripts[$instance]) + $luser.Script().ToSsortingng() } } } 

Le résultat sera une table de hachage avec chaque instance comme une key, et un tableau de strings où chaque string est le script T-SQL pour un user.

La méthode .Script() renvoie une collection de strings. Il y a probablement une façon plus élégante de le faire, mais en remplaçant

 $scripts.Set_Item ($instance, <what do I add in here?>) 

avec

 $val = $scripts[$instance] $val.Add("text to add") $scripts.Set_Item($instance, $val) 

devrait marcher.