From 7631c005ca3121dedd82439bfc09ca919f2dfbcd Mon Sep 17 00:00:00 2001 From: Don Schenck Date: Thu, 19 Jun 2014 10:13:57 -0500 Subject: [PATCH] Added logging to UpgradeToPS3.ps1 UpgradeToPS3.ps1 failed when tested with Ansible. Added logging output to file C:\powershell\install.log. --- examples/scripts/UpgradeToPS3.ps1 | 2 +- library/windows/win_user.ps1 | 76 +++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 library/windows/win_user.ps1 diff --git a/examples/scripts/UpgradeToPS3.ps1 b/examples/scripts/UpgradeToPS3.ps1 index f6a303c9514..83cc222b6e9 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 00000000000..a89b9f218ed --- /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