Comment pouvez-vous sélectionner des objets sur la base de deux propriétés d'un objet en powershell?
J'ai un tableau d'Objets qui ont des propriétés 6. Qui ressemblent à ceci:
$csvData
CURRENT DATE AND TIME : 07/10/2015 08:17:17 CST
USER NAME : userName
COMPUTER NAME : computerName
IP ADDRESS : 192.168.1.1
LOGON SERVER : logonServer
LOGON/OFF : logon
Je veux créer un tableau d'objets où nom d'utilisateur et le nom de l'ordinateur ne sont pas dupliqués. Comment puis-je obtenir seulement l'unique nom d'utilisateur/nom de l'ordinateur combo en powershell? En fin de compte, je voudrais supprimer tous les doublons et d'ajouter une propriété "Count" qui garde une trace de la façon dont de nombreux doublons.
J'ai essayé:
$csvDataUnique = $csvData | Select-Object 'User Name','Computer Name' -Unique
$csvDataUnique = $csvData | sort -Property 'User Name' | Get-Unique
J'ai aussi essayé:
$csvData = $csvData.GetEnumerator() | %{$_.'User Name',$_.'Computer Name'} | Select-Object -Unique
OriginalL'auteur ericalle | 2015-07-10
Vous devez vous connecter pour publier un commentaire.
Très similaire à Mathias réponse, mais vous aurez toutes les colonnes dans le résultat:
OriginalL'auteur R. McGee
Vous pouvez créer une propriété personnalisée avec votre
Select-Object
. Si vous étiez assez proche déjà. Essayez ceci:Essentiellement, il combine les deux champs dans une seule chaîne et trie unique. J'ai appelé le champ "Index", mais il pourrait être appelé n'importe quoi.
OriginalL'auteur Benjamin Hubbard
J'ai l'habitude de recourir à l'aide d'une table de hachage, et rejoint les valeurs de propriété pour les clés pour le type de tâche:
OriginalL'auteur mjolinor
Vous pouvez utiliser
Group-Object
de groupe par de multiples propriétés:OriginalL'auteur Mathias R. Jessen