Générique variable en Get-ADUser
Je suis sûr que c'est juste une erreur de syntaxe, mais im essayant de recherche d'utilisateurs AD, et je ne peux pas comprendre pourquoi cela ne fonctionne pas:
Write-Host "Enter LastName or UserName:"
$x = Read-Host
Get-ADUser -Filter { SAMAccountName -like '*$x*' } -Properties DispalyName | FT -Properties DisplayName
Juste ne retourne rien. Et je suis sûr que c'est de la syntaxe avec les "*". mais vous ne savez pas pourquoi. Merci pour toute aide.
OriginalL'auteur dotps1 | 2012-10-04
Vous devez vous connecter pour publier un commentaire.
$x n'est pas développée à l'intérieur du Filtre scriptblock, cela devrait faire l'affaire:
Sinon, vous pouvez utiliser le filtre ldap:
J'ai un doute sur la
-Filter {}
est évalué comme un scriptblock.. parce que dans ma réponse la variable est correctement évalué.Il n'est pas évaluée sur mon système. je me souviens de dépôt d'un bug à ce sujet, ou peut-être juste signalé cela à l'interne pour MSFT, mais je ne peux pas le trouver maintenant.
OriginalL'auteur Shay Levy
Je suis d'accord avec ci-dessus affiche. Les guillemets simples empêcher l'expansion des variables.
Guillemets doubles travail.
Il y a encore des cas où les guillemets ne vous sauvera pas, par exemple, avec un objet.
Dans ce cas, utilisez la mise en forme de chaîne:
write-host "*$($psobj.s)*"
J'en vertu de ce que vous dites, mais il ne semble pas répondre à ma question. parce que si je fais ce
PS C:\Windows\system32> $x = Read-Host "Enter Name" Enter Name: smith PS C:\Windows\system32> Write-Host "*$x*" *smith*
, il doit travailler le passage dans le Get-ADUserGet-ADUser -Filter { (SAMAccountName -like "*$x*") }
quand il vient à l'écriture de l'hôte, il sort smith donc je ne comprends pas pourquoi il ne marche pas dans le filtre. Merci pour l'objet et l'expansion des variables de clarification, il a été très utile.désolé pour le formatage, vous ne savez pas comment faire, mais les sauts de ligne dans la section commentaire. et il devrait y avoir "*" autour de la smith, pas en italique.
OriginalL'auteur Poorkenny
essayer en changeant simplement ceci:
Edit:
cela devrait fonctionner:
ne fonctionne pas non plus. J'ai commencé là. cela ne fonctionne pas, soit "" + $x + "". j'ai aussi essayé avec l'ajout de la variable $avant de passer dans l'applet de commande. pas sûr de ce que la face est.
ummm.. je peux le tester maintenant mais essayer de déclarer
$x
comme ce$global:x = Read-Host
non, lol, je sais que je ne l'obtenez pas.
Ce qui fonctionne le mieux, et est de 2x ou 3x plus rapide que la solution que j'ai posté. merci!
OriginalL'auteur CB.
Bien, cela fonctionne, juste un peu lent:
Peu différent, mais fonctionne non le moins! merci pour toute l'aide.
OriginalL'auteur dotps1
Je suis tombé sur ceci dans ma powershell courbe d'apprentissage lors de l'utilisation d'un objet.
J'ai lu dans un fichier csv des id utilisateur et à la recherche/match/filtre sur eux, et que de mettre en avant les guillemets doubles ne pas y travailler.
Ma solution a été d'utiliser la méthode ToString() sur mon objet et de définir une variable scalaire ensuite utiliser cette variable dans le filtre. A très bien fonctionné.
La table avait trois colonnes "Nom, ID, Département".
Pour les obtenir dans un filtre de recherche sur leur nom d'utilisateur, j'ai utilisé:
}
Ce évité mon expansion et de citations troubles complètement.
OriginalL'auteur Ernie