Install-User.ps1

function Install-User
{
param(
[Parameter()]
[string]$ComputerName = $env:computername, [Parameter(Mandatory=$true)]
[string]$UserName, [Parameter(Mandatory=$true)]
[string]$Password, [Parameter()]
[bool]$PasswordChangeable = $true, [Parameter()]
[bool]$PasswordExpired = $true, [Parameter()]
[string]$Description, [Parameter()]
[string]$FullName, [Parameter()]
[string]$Group, [Parameter()]
[switch]$PassThru
) Write-Verbose "Installing user '$Username' on '$ComputerName'..." if(!(Test-Connection $ComputerName -Count -Quiet))
{
Write-Error "Unable to connect '$ComputerName'. The network path not found."
return
}
try
{
if([ADSI]::Exists("WinNT://$ComputerName/$UserName"))
{
Write-Error "User '$UserName' is already exist on '$ComputerName'."
return
} if($Group)
{
if(!([ADSI]::Exists("WinNT://$ComputerName/$Group")))
{
Write-Error "Group '$Group' could not be found on '$ComputerName'."
return
}
} #Create User account
$account = ([ADSI]"WinNT://$ComputerName,computer").Create('user',$UserName)
#Set password on account
$account.psbase.invoke("SetPassword",$Password)
#Commit the changes made
$account.psbase.CommitChanges()
#Set description on account
if($Description) { $account.description = $Description }
#Set description on account
if($FullName) { $account.fullname = $FullName }
#Set flag for password to not expire
if(!$PasswordExpired)
{
$ADS_UF_DONT_EXPIRE_PASSWD = 0x10000
$account.userflags = $account.userflags[] -bor $ADS_UF_DONT_EXPIRE_PASSWD
}
#Set flag for not allow user to change password
if(!$PasswordChangeable) {
$ADS_UF_DO_NOT_ALLOW_PASSWD_CHANGE = 0x0040
$account.userflags = $account.userflags[] -bor $ADS_UF_DO_NOT_ALLOW_PASSWD_CHANGE
}
#Commit the changes
$account.psbase.CommitChanges()
Write-Verbose "Creating user '$Username' on '$ComputerName' was successfully." if($Group)
{
#Add account to Local group
$localGroup = [ADSI]"WinNT://$ComputerName/$Group,group"
$localGroup.PSBase.Invoke("Add",$account.PSBase.Path)
Write-Verbose "Adding user '$Username' to group '$Group' on '$ComputerName' was successfully."
} Write-Verbose "User '$Username' has been installed on '$ComputerName'." if($Passthru)
{
$pso = New-Object PSObject -Property @{
ComputerName = $ComputerName.ToUpper()
UserName = $UserName
FullName = $FullName
Description = $Description
PasswordExpired = $PasswordExpired
PasswordChangeable = $PasswordChangeable
Group = $Group
}
$pso.PSTypeNames.Clear()
$pso.PSTypeNames.Add('MKServerBuilder.UserAccount')
$pso
}
}
catch
{
Write-Error $_
}
}

Install-User.ps1的更多相关文章

  1. 【转】Install Win32 OpenSSH (test release)

    Openssh download url:https://github.com/PowerShell/Win32-OpenSSH/releases Install instruction: Insta ...

  2. Powershell script to install Windows Updates (msu) from folder

    ######################################################### # # Name: InstallWindowsUpdates.ps1 # Auth ...

  3. 利用Nuget打包添加tools下intsall.ps1【powershell脚本】修改.csproj文件

    利用Nuget打包添加tools下intsall.ps1[powershell脚本]修改.csproj文件, 以设置1.项目-生成->输出->选择[XML文件文件] 2.项目->调试 ...

  4. 'Install app for SharePoint': Sideloading of apps is not enabled on this site

    http://blog.lekman.com/2012/11/sharepoint-2013-sideloading-of-apps-is.html Solution: You need to ena ...

  5. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1

    最近因为电脑太卡,小颖把电脑重装了,重装后再执行 npm install -g @vue/cli 时可能是网络问题,一直不能成功,小颖就把npm指向了淘宝镜像: npm install -g cnpm ...

  6. Install chocolatey

    Requirements Windows 7+ / Windows Server 2003+ PowerShell v2+ .NET Framework 4+ (the installation wi ...

  7. 解决npm : 无法加载文件 D:\Code\renren-fast-vue\node_modules\.bin\npm.ps1,因为在......

    解决这个问题: 看看错误信息: npm : 无法加载文件 D:\DevPath\nodejs\npm.ps1,因为在此系统上禁止运行脚本.有关详细信息,请参阅 https:/go.microsoft. ...

  8. OEL上使用yum install oracle-validated 简化主机配置工作

    环境:OEL 5.7 + Oracle 10.2.0.5 RAC 如果你正在用OEL(Oracle Enterprise Linux)系统部署Oracle,那么可以使用yum安装oracle-vali ...

  9. org.jboss.deployment.DeploymentException: Trying to install an already registered mbean: jboss.jca:service=LocalTxCM,name=egmasDS

    17:34:37,235 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-0.0.0.0-8080 17:34:37,281 INFO [ ...

  10. 如何使用yum 下载 一个 package ?如何使用 yum install package 但是保留 rpm 格式的 package ? 或者又 如何通过yum 中已经安装的package 导出它,即yum导出rpm?

    注意 RHEL5 和 RHEL6 的不同 How to use yum to download a package without installing it Solution Verified - ...

随机推荐

  1. 【BZOJ 3473】 字符串 (后缀数组+RMQ+二分 | 广义SAM)

    3473: 字符串 Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串 ...

  2. [转贴]从零开始学C++之STL(二):实现一个简单容器模板类Vec(模仿VC6.0 中 vector 的实现、vector 的容量capacity 增长问题)

    首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下:  C++ Code  1 2   template < class _Ty, cl ...

  3. haskell Types 和 Typeclasses

    Algebraic Data Types 入门 在前面的章节中,我们谈了一些 Haskell 内置的类型和 Typeclass.而在本章中,我们将学习构造类型和 Typeclass 的方法. 我们已经 ...

  4. Python urllib2写爬虫时候每次request open以后一定要关闭

    最近用python urllib2写一个爬虫工具,碰到运行一会程序后就会出现scoket connection peer reset错误.经过多次试验发现原来是在每次request open以后没有及 ...

  5. ASP.Net4.0中新增23项功能

    这篇文章介绍Visual Studio 2010 (ASP.Net 4.0)的新功能. 1.代码片段(Code Snippets): 代码段是预先开发的代码模板,可以节省我们对有关语法思考的时间.在V ...

  6. WordPress Quick Paypal Payments插件HTML注入漏洞

    漏洞名称: WordPress Quick Paypal Payments插件HTML注入漏洞 CNNVD编号: CNNVD-201310-491 发布时间: 2013-10-22 更新时间: 201 ...

  7. 【转】Android源代码编译命令m/mm/mmm/make分析--不错

    原文网址:http://blog.csdn.net/luoshengyang/article/details/19023609 在前文中,我们分析了Android编译环境的初始化过程.Android编 ...

  8. Linux无线网络设置(wpa_supplicant的使用)

    主机环境:Gentoo Linux 3.1.10 WPA Supplicant工具包可以让您连接到那些使用WPA的AP.因为还只是beta版,所以它的配置方法仍会常常变化——尽管如此,在大部分情况下它 ...

  9. 从零开始学习jQuery

    转自:http://www.cnblogs.com/zhangziqiu/archive/2009/04/30/jQuery-Learn-1.html 本系列文章导航 从零开始学习jQuery (一) ...

  10. JVM performance profiling (有待整理)

    Agenda memory model 3 parts: heap, permgen (method area) , thread stack(pointer, local var) heap: yo ...