none
local group RRS feed

  • Domanda

  • Salve a tutti vorrei chiedervi un aiuto,

    avrei la necessità di estrarre gli utenti che fanno parte del gruppo administrator locale dei pc.

    Sapreste indicarmi uno script che mi permetta di estrarre questi dati.

    Grazie per l'eventuale aiuto

    mercoledì 21 settembre 2016 14:24

Risposte

  • Come volevasi dimostrare i problemi di esecuzione remota sono emersi ....

    viste le difficoltà, apri una powershell "elevata" con un utente che abbia permessi di amministrazione sui pc (es. un domain admin)

    modifica $pcs e correggi il percorso verso psexec.exe

    copia e incolla il codice modificato.

    cls
    $pcs=$env:COMPUTERNAME,$env:COMPUTERNAME,"pc3","pc4"
    $pcs | % {
         $ou=C:\PSTools\PsExec.exe \\$_  -s c:\windows\system32\net.exe localgroup administrators
         "$_;"+ $ou[6..($ou.Count-3)] -join ";" >>risultato.txt
    }

    ecco il risultato

    pc-uno;administrator dom\gastone.canali
    pc-due;administrator dom\entadm

    ps: la parte seguente potrebbe non essere aderente all' output del tuo sistema, in tal caso modifica il primo valore

    $ou[6..($ou.Count-3)] 


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere




    giovedì 22 settembre 2016 22:35
    Moderatore

Tutte le risposte

  • Ciao,
    il modo più semplice è così:

    net localgroup administrators

    e lo puoi fare da CMD altrimenti da powershell puoi fare così:

    invoke-command {net localgroup administrators} -ComputerName NomeComputer

    Se ti serve per più computer puoi fare così:

    $ComputerName = "pc1","pc2","pc3"...

    invoke-command {net localgroup administrators} -ComputerName  $ComputerName

    Faci sapere se può andare.
    Ciao!

    mercoledì 21 settembre 2016 15:41
  • Il codice di OttobreRosso è corretto, ma potresti trovare dei problemi nell'esecuzione remota ... che deve essere abilitata (su tutti i computer!!), vedi qui, come fare https://blogs.technet.microsoft.com/heyscriptingguy/2010/11/16/enable-powershell-remoting-to-enable-running-commands/

    La soluzione preferibile e molto probabilmente funzionante senza codice aggiuntivo è usare psexec.exe e net.exe localgroup administrators

    rimanendo in ambito powershell, ecco una versione che usa wmi,  qualora non funzionasse, avrebbe bisogno dell'apertura di una sola porta nei firewall dei pc, fattibile con una policy.

    $Computers=$env:computername,$env:computername
    $Computers|ForEach-Object {Get-WMIObject win32_group -filter "LocalAccount='True'" -computer $_ |
                        where name -eq "administrators" |  
                            Select PSComputername,Name,@{
                                            Name="Members"
                                            Expression={$_.GetRelated("win32_useraccount").Name}
                             } |  select pscomputername,members
    
                        }  

    Tutti i codici finora elencati non risolvono il problema dei gruppi nidificati all'interno del gruppo Administrators...

    ciao Gas


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere


    mercoledì 21 settembre 2016 19:24
    Moderatore
  • Ciao,

    qui trovi diversi esempi:

    https://www.petri.com/use-powershell-to-find-local-groups-and-members


    This post is provided AS IS with no warranties or guarantees, and confers no rights.
    ~~~
    Questo post non fornisce garanzie e non conferisce diritti

    mercoledì 21 settembre 2016 19:49
  • Salve a tutti e grazie per l'attenzione,

    ho fatto delle prove con i vostri suggerimenti...quello che più si avvicina alle mie esigenze ( o quantomeno sono riuscito afrgli fare quello che miserve :-) ) è:

    Get-WMIObject win32_group -filter "LocalAccount='True'" -computername $Server |
      Select PSComputername,Name,@{Name="Members";Expression={
       $_.GetRelated("win32_useraccount").Name -join ";"
      }}  

    che ho preso dal link che ha segnalato aparelli

    però volevo chiedervi perchè quando lo lancio l'unico pc che mappa è il server sul quale lo faccio girare..

    ho provato anche il primo

    $ComputerName = "pc1","pc2","pc3"...

    invoke-command {net localgroup administrators} -ComputerName  $ComputerName

    Sembra facile anche da implementare ...però quando inserisco un pc per prova mi dice sempre:

    [nome pc] Connecting to remote server nome pc failed with the following error message : WinRM cannot com
    operation. Verify that the specified computer name is valid, that the computer is accessible over the networ
    that a firewall exception for the WinRM service is enabled and allows access from this computer. By default,

    Anche se ho aperto il firewall a tutto.....

    qualche idea...??

    giovedì 22 settembre 2016 14:47
  • WinRM pare disabilitato sulla macchina remota

    prova a eseguire "winrm quickconfig" su una delle macchine remote e riprova.

    Qui trovi una miniguida: http://www.hurryupandwait.io/blog/understanding-and-troubleshooting-winrm-connection-and-authentication-a-thrill-seekers-guide-to-adventure


    This post is provided AS IS with no warranties or guarantees, and confers no rights.
    ~~~
    Questo post non fornisce garanzie e non conferisce diritti

    giovedì 22 settembre 2016 15:48
  • Come volevasi dimostrare i problemi di esecuzione remota sono emersi ....

    viste le difficoltà, apri una powershell "elevata" con un utente che abbia permessi di amministrazione sui pc (es. un domain admin)

    modifica $pcs e correggi il percorso verso psexec.exe

    copia e incolla il codice modificato.

    cls
    $pcs=$env:COMPUTERNAME,$env:COMPUTERNAME,"pc3","pc4"
    $pcs | % {
         $ou=C:\PSTools\PsExec.exe \\$_  -s c:\windows\system32\net.exe localgroup administrators
         "$_;"+ $ou[6..($ou.Count-3)] -join ";" >>risultato.txt
    }

    ecco il risultato

    pc-uno;administrator dom\gastone.canali
    pc-due;administrator dom\entadm

    ps: la parte seguente potrebbe non essere aderente all' output del tuo sistema, in tal caso modifica il primo valore

    $ou[6..($ou.Count-3)] 


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere




    giovedì 22 settembre 2016 22:35
    Moderatore
  • Salve a grazie a tutti per l'attenzione,
    grazie a Gastone ho provato i l tuo script e funziona...
    in verità avevo trovato anche sul link suggerito da aparelli uno script funzionante tramite però l'apertura da firewall

    lunedì 26 settembre 2016 14:18
  • Salve a grazie a tutti per l'attenzione,
    grazie a Gastone ho provato i l tuo script e funziona...
    in verità avevo trovato anche sul link suggerito da aparelli uno script funzionante tramite però l'apertura da firewall

    Lungi da essere  La soluzione (ci sono tanti altri modi),per migliorare ulteriormente, si dovrebbe evitare il timeout del tcpip di psexec... se devi controllare 50 computers, di cui molti spenti, non ti passa più ...

    Ciao Gas


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    lunedì 26 settembre 2016 20:45
    Moderatore