mirror of https://github.com/ansible/ansible.git
Add PowerShell exception handling and turn on strict mode.
* Add exception handling when running PowerShell modules to provide exception message and stack trace. * Enable strict mode for all PowerShell modules and internal commands. * Update common PowerShell code to fix strict mode errors. * Fix an issue with Set-Attr where it would not replace an existing property if already set. * Add tests for exception handling using modified win_ping modules.pull/12384/head
parent
a1948dd1c1
commit
5c65ee7f0c
@ -0,0 +1,31 @@
|
|||||||
|
#!powershell
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# POWERSHELL_COMMON
|
||||||
|
|
||||||
|
$params = Parse-Args $args $true;
|
||||||
|
|
||||||
|
$data = Get-Attr $params "data" "pong";
|
||||||
|
|
||||||
|
$result = New-Object psobject @{
|
||||||
|
changed = $false
|
||||||
|
ping = "pong"
|
||||||
|
};
|
||||||
|
|
||||||
|
# Test that Set-Attr will replace an existing attribute.
|
||||||
|
Set-Attr $result "ping" $data
|
||||||
|
|
||||||
|
Exit-Json $result;
|
@ -0,0 +1,30 @@
|
|||||||
|
#!powershell
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# POWERSHELL_COMMON
|
||||||
|
|
||||||
|
$params = Parse-Args $args $true;
|
||||||
|
|
||||||
|
$x = $params.thisPropertyDoesNotExist
|
||||||
|
|
||||||
|
$data = Get-Attr $params "data" "pong";
|
||||||
|
|
||||||
|
$result = New-Object psobject @{
|
||||||
|
changed = $false
|
||||||
|
ping = $data
|
||||||
|
};
|
||||||
|
|
||||||
|
Exit-Json $result;
|
@ -0,0 +1,30 @@
|
|||||||
|
#!powershell
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# POWERSHELL_COMMON
|
||||||
|
|
||||||
|
$blah = 'I can't quote my strings correctly.'
|
||||||
|
|
||||||
|
$params = Parse-Args $args $true;
|
||||||
|
|
||||||
|
$data = Get-Attr $params "data" "pong";
|
||||||
|
|
||||||
|
$result = New-Object psobject @{
|
||||||
|
changed = $false
|
||||||
|
ping = $data
|
||||||
|
};
|
||||||
|
|
||||||
|
Exit-Json $result;
|
@ -0,0 +1,30 @@
|
|||||||
|
#!powershell
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# POWERSHELL_COMMON
|
||||||
|
|
||||||
|
throw
|
||||||
|
|
||||||
|
$params = Parse-Args $args $true;
|
||||||
|
|
||||||
|
$data = Get-Attr $params "data" "pong";
|
||||||
|
|
||||||
|
$result = New-Object psobject @{
|
||||||
|
changed = $false
|
||||||
|
ping = $data
|
||||||
|
};
|
||||||
|
|
||||||
|
Exit-Json $result;
|
@ -0,0 +1,30 @@
|
|||||||
|
#!powershell
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# POWERSHELL_COMMON
|
||||||
|
|
||||||
|
throw "no ping for you"
|
||||||
|
|
||||||
|
$params = Parse-Args $args $true;
|
||||||
|
|
||||||
|
$data = Get-Attr $params "data" "pong";
|
||||||
|
|
||||||
|
$result = New-Object psobject @{
|
||||||
|
changed = $false
|
||||||
|
ping = $data
|
||||||
|
};
|
||||||
|
|
||||||
|
Exit-Json $result;
|
Loading…
Reference in New Issue