# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. if($PSVersionTable.PSEdition -ne 'Desktop') { throw 'Must be run from Windows PowerShell' } function New-LocalUser { <# .SYNOPSIS Creates a local user with the specified username and password .DESCRIPTION .EXAMPLE .PARAMETER username Username of the user which will be created .PARAMETER password Password of the user which will be created .OUTPUTS .NOTES #> param( [Parameter(Mandatory=$true)] [string] $username, [Parameter(Mandatory=$true)] [string] $password ) $LocalComputer = [ADSI] "WinNT://$env:computername"; $user = $LocalComputer.Create('user', $username); $user.SetPassword($password) | out-null; $user.SetInfo() | out-null; } <# Converts SID to NT Account Name #> function ConvertTo-NtAccount { param( [Parameter(Mandatory=$true)] [string] $sid ) (new-object System.Security.Principal.SecurityIdentifier($sid)).translate([System.Security.Principal.NTAccount]).Value } <# Add a user to a local security group Requires Windows PowerShell #> function Add-UserToGroup { param( [Parameter(Mandatory=$true)] [string] $username, [Parameter(Mandatory=$true, ParameterSetName = "SID")] [string] $groupSid, [Parameter(Mandatory=$true, ParameterSetName = "Name")] [string] $group ) $userAD = [ADSI] "WinNT://$env:computername/${username},user" if($PsCmdlet.ParameterSetName -eq "SID") { $ntAccount=ConvertTo-NtAccount $groupSid $group =$ntAccount.Split("\\")[1] } $groupAD = [ADSI] "WinNT://$env:computername/${group},group" $groupAD.Add($userAD.AdsPath); }