diff --git a/examples/scripts/UpgradeToPS3.ps1 b/examples/scripts/UpgradeToPS3.ps1 index f6a303c951..83cc222b6e 100644 --- a/examples/scripts/UpgradeToPS3.ps1 +++ b/examples/scripts/UpgradeToPS3.ps1 @@ -68,4 +68,4 @@ else $FileName = $DownLoadUrl.Split('/')[-1] download-file $downloadurl "$powershellpath\$filename" -."$powershellpath\$filename" /quiet \ No newline at end of file +."$powershellpath\$filename" /quiet /log "C:\powershell\install.log" \ No newline at end of file diff --git a/library/windows/win_user.ps1 b/library/windows/win_user.ps1 new file mode 100644 index 0000000000..a89b9f218e --- /dev/null +++ b/library/windows/win_user.ps1 @@ -0,0 +1,76 @@ +#!powershell +# (c) 2014, Matt Martz , and others +# +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +# WANT_JSON +# POWERSHELL_COMMON + +$params = Parse-Args $args; + +$result = New-Object psobject; +Set-Attr $result "changed" $false; + +If (-not $params.username.GetType) +{ + Fail-Json $result "missing required arguments: username" +} + +If (-not $params.password.GetType) +{ + Fail-Json $result "missing required arguments: password" +} + +$extra_args = "" +If ($params.extra_args.GetType) +{ + $extra_args = $params.extra_args; +} + +If ($params.creates.GetType -and $params.state.GetType -and $params.state -ne "absent") +{ + If (Does-User-Exist $params.username) + { + Exit-Json $result; + } +} + +$logfile = [IO.Path]::GetTempFileName(); +if ($params.state.GetType -and $params.state -eq "absent") +{ + NET USER $params.username $params.password /ADD +} + +Set-Attr $result "changed" $true; + +$logcontents = Get-Content $logfile; +Remove-Item $logfile; + +Set-Attr $result "log" $logcontents; + +Exit-Json $result; + +Function Does-User-Exist($username) +{ +$objComputer = [ADSI]("WinNT://$env:COMPUTERNAME,computer") + +$colUsers = ($objComputer.psbase.children | + Where-Object {$_.psBase.schemaClassName -eq "User"} | + Select-Object -expand Name) + +$blnFound = $colUsers -eq $username + +} \ No newline at end of file