2013-03-01 29 views
46

Devo creare un nuovo account utente locale e quindi aggiungerli al gruppo locale Administrators. Questo può essere fatto in PowerShell?PowerShell: Crea account utente locale

EDIT:

# Create new local Admin user for script purposes 
$Computer = [ADSI]"WinNT://$Env:COMPUTERNAME,Computer" 

$LocalAdmin = $Computer.Create("User", "LocalAdmin") 
$LocalAdmin.SetPassword("Password01") 
$LocalAdmin.SetInfo() 
$LocalAdmin.FullName = "Local Admin by Powershell" 
$LocalAdmin.SetInfo() 
$LocalAdmin.UserFlags = 64 + 65536 # ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD 
$LocalAdmin.SetInfo() 

ho questo, ma chiedevo se c'è qualcosa di più PowerShell-esque.

+7

Ciò che non è PowerShell-esque a tale proposito? Non tutto è un cmdlet, ma ciò non significa che non puoi avvolgere il codice sopra in una tua funzione per farla sentire come tale. – alroc

+0

Powershell-esque è cmdlet e pipeline; questo è C++ – bwerks

+1

@bwerks - se cmdlet e pipeline sono ciò che significa PowerShell per te, ti manca completamente la parte "power" di PowerShell - .NET, interfacce COM, Reflection, Platform Invocation, ecc. ecc. ecc. – thepip3r

risposta

54

Un'altra alternativa è la vecchia scuola NET USER comandi:

NET USER username "password" /ADD

OK - non è possibile impostare tutte le opzioni ma è molto meno complicata per la creazione semplice utente & facile da copione in PowerShell.

NET LOCALGROUP "group" "user" /add per impostare l'appartenenza al gruppo.

+1

Chiamare a 'net.exe' mi sembra senza _" PowerShell-esque "rispetto al codice ADSI originale; non c'è nulla di indicativo di PowerShell in quei comandi, e potresti lasciarli cadere, ad esempio, in un file batch e funzionerebbero allo stesso modo. Per me, si evita il ** Power ** di una ** shell ** orientata agli oggetti e ritorna a dover gestire sintassi di comando, codici di uscita e messaggi di errore specifici dell'applicazione. Per essere onesti, però, ci sono davvero due diverse domande che sono state poste qui: "Come posso farlo in PowerShell?" e "Posso farlo in PowerShell. Come posso farlo meglio?" – BACON

+1

FWIW Ho riscontrato un problema con una funzione di PowerShell che ho scritto per racchiudere la chiamata "NET USER/ADD". In particolare, se la password era più lunga di 14 caratteri, la riga di comando NET USER chiedeva l'input dell'utente per confermare Y/N. Non è presente alcuna opzione della riga di comando in NET USER per fornire tale conferma in modo da "bloccare" gli script PS eseguiti in modo non interattivo. – Jaans

10

Try usando Carbon'sInstall-User e Add-GroupMember funzioni:

Install-User -Username "User" -Description "LocalAdmin" -FullName "Local Admin by Powershell" -Password "Password01" 
Add-GroupMember -Name 'Administrators' -Member 'User' 

Disclaimer: Io sono il creatore/maintainer del progetto Carbon.

+0

Salve, il tuo get carbon era esattamente quello che stavo cercando, è lo script di mod-security per i siti web asp anche su 2k12r2. Sarebbe bello vedere alcune raccomandazioni sui moduli di sicurezza, ecc per IIS e difendere il server. – aggie

+0

@aggie Vedi [Carbon docs] (http://get-carbon.org/documentation.html) per l'elenco completo delle sue funzionalità. –

+0

mi piace, sembra ben mantenuto. non ci vorrà molto prima che io carbonizzi il nostro modulo base per gli script di implementazione. potrei avere qualche contributo lungo la linea. grazie @aaronjensen et al! – sonjz

6

A partire dal 2014, here is a statement da un rappresentante Microsoft (l'Scripting Guy):

Per quanto potremmo odiare ammetterlo, non ci sono ancora di Windows cmdlet di PowerShell di Microsoft che consentono la creazione di utente locale account o gruppi di utenti locali. Finalmente abbiamo un provider di stato di configurazione (DSC) desiderato che può fare questo, ma fino ad oggi, nessun cmdlet .

31

A partire da PowerShell 5.1 è presente il cmdlet New-LocalUser che potrebbe creare un account utente locale.

Esempio di utilizzo:

creare un account utente

New-LocalUser -Name "User02" -Description "Description of this account." -NoPassword 

o creare un account utente che dispone di una password

$Password = Read-Host -AsSecureString 
New-LocalUser "User03" -Password $Password -FullName "Third User" -Description "Description of this account." 

o creare un account utente che è connesso a un Microsoft account

New-LocalUser -Name "MicrosoftAccount\usr [email protected]" -Description "Description of this account." 
+0

Va detto che c'è ancora solo una versione di anteprima di PowerShell 5.1. – kls

+1

PowerShell 5.1 è incluso in Windows Server 2016. :-) –

+1

Verificato che questo ha funzionato su Windows 10 Enterprise, Powershell Versione 5.1 Build 14393 –

0
Import-Csv C:\test.csv | 
Foreach-Object { 
    NET USER $ _.username $ _.password /ADD 
    NET LOCALGROUP "group" $_.username /ADD 
} 

modificare CSV come nome utente, password e cambiamento "gruppo" per il vostro GROUPNAME

:) ha lavorato nel 2012 R2

Problemi correlati