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. const char * 的终结贴(看完无需其他任何文章,从此不再蛋疼)

    我之前也是以为我对const char *ptr 这种形式的写法是掌握了的,真的,不就是说一个指针是不可改变的吗? 那么问题就来了,到底是ptr指针本身不能改变,还是ptr执行的值不能改变呢? 从网上 ...

  2. 【网络流24题】No.18 分配问题 (二分图最佳匹配 费用流|KM)

    [题意] 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为 cij . 试设计一个将n 件工作分配给 n 个人做的分配方案, 使产生的总效益最大. 输入文件示例input. ...

  3. Qt的事件模型(5种使用办法,通常重新实现event handler即可。只有定义控件才需要管理信号的发射)

    Qt的事件模型 1.事件的概念 应用程序对象将系统消息接收为 Qt 事件.应用程序可以按照不同的粒度对事件加以监控.过滤并做出响应. 在 Qt 中,事件是指从 QEvent继承 的对象.Qt将事件发送 ...

  4. NavigationDrawer+Fragment实现侧滑菜单效果

    学习了NavigationDrawer 官方Support包中的SlidingMenu版本,练了下手.用到了ListView中item不同的布局 以后会升级加上ViewPager和GridView实现 ...

  5. Hadoop开发环境搭建

    hadoop是一个分布式系统基础架构,由Apache基金会所开发. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.   Hadoop实现了一个分布式文件系统 ...

  6. C# web 网页刷新时数据集的保存和应用

    Web 数据访问策略建议 设计 Web 应用程序中的数据访问时,您要做出多种选择,例如与数据源通信的方式.是否在页的往返过程之间存储数据.以及如果确实要存储数据应存储在何处等.您所做的选择可以确定应用 ...

  7. 【数据结构】之二叉树的java实现

    转自:http://blog.csdn.net/wuwenxiang91322/article/details/12231657 二叉树的定义: 二叉树是树形结构的一个重要类型.许多实际问题抽象出来的 ...

  8. Java正则表达式应用总结

    http://lavasoft.blog.51cto.com/ http://lavasoft.blog.51cto.com/62575/179324      Java正则表达式应用总结   一.概 ...

  9. ftp服务器测试

    前台传递字符串reqbuf: ftp服务器IP\r\n端口\r\n用户名\r\n密码\r\nftp路径\r\n\r\n 解析reqbuf,重新组装成系统命令,去执行ftptest.sh脚本, 调用sy ...

  10. Linux I2C设备驱动编写(一)

    在Linux驱动中I2C系统中主要包含以下几个成员: I2C adapter 即I2C适配器 I2C driver 某个I2C设备的设备驱动,可以以driver理解. I2C client 某个I2C ...