Utilisation de PowerShell J'essaie d'obtenir une liste d'utilisateurs / groupe qui ont des autorisations d'utilisateur de bureau à distance pour pouvoir vous connecter à un serveur.
Je peux utiliser " net localgroup" em> à Obtenez une liste des groupes / utilisateurs avec les autorisations de l'utilisateur de bureau distant: p> PS C: \ users \ pal.test> nom d'alias de réseau local de caractères réseau
Les utilisateurs de bureau à distance commenter les membres de ce groupe sont accordés
le droit de logon à distance p>
membres p>
pal \ kron.pal de Cependant, si j'exécute cette commande et sortie à une variable, je reçois tous les en-têtes inclus: P> PS C: \ Users \ Pal.Test> $ RDpusers = NET GLACKGROUP "Bureau distant
Utilisateurs " p>
ps c: \ users \ pal.test> écriture-hôte $ RDpusers p>
nom d'alias nom de bureau à distance commenter les membres de cette
le groupe reçoit le droit de logon membre à distance
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------- PAL \ KRON.PAL PAL \ PAL-VPN-Client-Client pour d'autres commandes telles que " get-wmiobject em>" je voudrais utiliser " | sélection-objet -expandproperty membres em> Pour filtrer la propriété et sélectionner uniquement la propriété valeurs. Toutefois, si j'utilise cela, obtenez une sortie vierge ou une erreur lorsque j'essaie d'utiliser -expandProperty: P> PS C: \ Users \ Pal.Test> Le groupe local net "Utilisateurs de bureau à distance" | SELECT-OBJECT-OBJET -XPANDPROPERTY MEMBRES P>
Select-Object: Propriété "Membres" est introuvable. p>
en ligne: 1 Char: 41 P>
NET LocalGroupe "Utilisateurs de bureau à distance" | Membres Select-Object -ExpandProperty P> Li>
PAL \ PAL-VPN-Clients
La commande s'est terminée avec succès. P>
blockquote>
La commande s'est terminée avec succès. P>
blockQuote>
+ CategoryInfo : InvalidArgument: (Alias name Remote Desktop Users:PSObject) [Select-Object], PSArgumentException
+ FullyQualifiedErrorId ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
3 Réponses :
Je pense que cela fonctionnera en 2008, mais ne peut pas le tester. [ blush em>] Je ne sais pas lorsque les paramètres -skip * code> ont été ajoutés. Si cela échoue sur vos systèmes cible, essayez d'utiliser l'indexation du tableau pour obtenir uniquement ceux que vous souhaitez. p> p>
Cela aussi n'est pas testé par moi sur le serveur 2008/2012/2016, mais cela peut aider:
function Get-LocalGroupMembers {
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true, Position = 0)]
[String]$Identity,
[String]$ComputerName = $env:COMPUTERNAME
)
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$context = New-Object DirectoryServices.AccountManagement.PrincipalContext('Machine', $ComputerName)
try {
if (!([string]::IsNullOrEmpty($Identity))) {
# search a specific group
[DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($context, $Identity)
}
else {
# search all local groups
$groupPrincipal = New-Object DirectoryServices.AccountManagement.GroupPrincipal($context)
$principalSearcher = New-Object DirectoryServices.AccountManagement.PrincipalSearcher($groupPrincipal)
}
}
catch {
throw "Error searching group(s) on '$ComputerName'. $($_.Exception.Message)"
}
finally {
if ($groupPrincipal) {$groupPrincipal.Dispose()}
if ($principalSearcher) {$principalSearcher.FindAll()}
}
}
(Get-LocalGroupMembers -Identity "Remote Desktop Users").Members | Select-Object -ExpandProperty Name
merci lee_dailey; Votre solution était très proche de ce dont j'avais besoin. J'ai trouvé cependant que PowerShell 2.0 sur Windows 2008 n'a pas l'option "SkipLast" dans le cadre de l'option "Select-Object".
J'ai utilisé votre code comme base de solution alternative pour éviter l'option "SkipLast". Non disponible dans PowerShell 2.0 sous Windows 2008. P>
PS C:\Users\pal.test> net localgroup "Remote Desktop Users" | where {$_ -AND $_ -notmatch "command completed successfully"} | select -skip 4
PAL\kron.pal
PAL\PAL-VPN-Client
Pourriez-vous modifier votre question et formater le code sous forme de code ? Merci.
Pour Windows Server 2016, vous pouvez utiliser GET-LocalGroup .
Merci OLAF Le "Get-LocalGroup" fonctionne sur Windows Server 2016, mais la cmdlet ne semble pas être disponible dans Windows Server 2008 et 2012. Je reçois un "n'est pas le nom d'une cmdlet reconnue". Je vous utilise la version Windows pour créer une instruction IF et utiliser le "Get-LocalGroup" pour Windows Server 2016.
Quelqu'un connaît toute autre option pour Windows Server 2008 et 2012? Merci.