78 lines
1.7 KiB
PowerShell
78 lines
1.7 KiB
PowerShell
|
# 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);
|
||
|
}
|