Powershell: où {_.Nom n'est pas dans $objet}
Je suis en train de construire un script qui liste tous les comptes d'ordinateur Inactif. Je tiens à exclure un certain nombre de systèmes à partir des résultats.
J'ai un fichier texte contenant tous les systèmes à être exclus (un systemname par ligne). Tous les éléments sont stockés dans un objet avec le nom de la propriété "nom". Donc $exclus contiendra:
name
----
system1
system2
À la liste de tous les inactifs des systèmes que j'utilise la Recherche-ADAccount applet de commande:
$InactiveComputers = Search-ADAccount -AccountInactive -TimeSpan 90 -ComputersOnly | Where {$_.Enabled -eq $true}
Bien sûr, je peux en boucle tous les résultats 1 par 1, mais est-il une simple façon d'exclure les systèmes directement à partir des résultats? J'ai eu le sentiment que c'est possible avec select-object ou où-objet, mais je ne peux pas comprendre comment comparer les résultats dans un objet.
OriginalL'auteur Walter81 | 2012-05-22
Vous devez vous connecter pour publier un commentaire.
Vous ont été fondamentalement correcte en utilisant ce dans votre titre: "où {_.Nom n'est pas dans $object}"
La syntaxe est un peu différente. Pipe à la suite de
OU
Les deux semblent donner les mêmes résultats dans la console. Amusez-vous bien!
Remarque: Testé sur des PSv2 et v3.
J'ai couru à travers ce lors de la recherche d'une réponse et pensé que je devrais mettre à jour avec ces options pour les autres que cette.
Désolé, j'ai été l'exécution de cette sur un ordinateur portable que je n'ai pas plus donc je ne peux pas dire à coup sûr. Je ne me souviens pas de ce que l'exacte powershell version mineure a été. De rappeler les principales versions. J'ai fait quelques recherches et trouvé ceci: technet.microsoft.com/en-us/library/hh847759.aspx Il montre que Powershell v3 introduit -notin afin que vous auriez à utiliser la première méthode pour obtenir celui-ci à travailler en v2 ( Où { !($_.Nom-en $exclus) } ). Espérons que cette aide!
OriginalL'auteur Robert McMahan
Importer le fichier exclude (csv) et l'utilisation de l'-notcontains opérateur:
Vous n'avez pas mentionné dans votre question. Vous pourriez solution de contournement: Import-csv exclude.txt | where {$_.Nom -match '\S' -et $_.Nom -notlike ";*"}
merci pour les conseils. Malheureusement, cette commande retourne un objet vide. import-csv excluded.txt des œuvres. Mais lorsque j'ajoute le foreach ou lorsque l'instruction, elle retourne un ensemble vide
ignorer ce dernier commentaire. Mon mauvais.import-csv combiné avec où les œuvres.
mais infortunately cela n'a pas fonctionné. Recherche-ADaccounts stil comprend les éléments exclus trop 🙁
OriginalL'auteur Shay Levy
Je pense que vous pouvez utiliser
-notcontains
(Article TechNet) opérateur:OriginalL'auteur jumbo