many pslint fixes (#55862)
* Handles: PSAvoidTrailingWhitespace PSAvoidGlobalVars PSAvoidAssignmentToAutomaticVariable PSAvoidUsingCmdletAliases PSAvoidUsingWriteHost PSUseDeclaredVarsMoreThanAssignments PSUsePSCredentialType PSAvoidUsingPositionalParameters PSAvoidUsingEmptyCatchBlock PSAvoidUsingWMICmdlet Replaced Write-Host with Write-Output Added smart reboot check for win_domain feature installation Modify the Creation of the pagefileto fit to CIM Changelog fragment addition Ignore.txt without fixes * Changes after community reviews * Change Out-Null to '> $null' * Fixes after jborean93 comments * Test * Revert "Test" This reverts commit 35c5c0648fa9d2868a18094d84954e53ffa28880. * Removed all > $null since they broke the module since the output got dumped * run test again * Revert "run test again" This reverts commit 80eaf07143f9d8cb0116cbbc68a6a69c0ace840c. * Changes after community review * ignore PSUseDeclaredVarsMoreThanAssignments that are on a diffrent PR * CI failed on extra line in ignore.txt * Review changes * PSlint errors * Trail space * send to null breaks the tests for Set-Workgroup * Lint stuff * win_domain_user issue of indent. * Update win_domain_user.ps1 * Update win_domain_membership.ps1 * Fix redirect to null * lint space issue * removed return from set-workgroup * removed send to null
This commit is contained in:
parent
5689cc08ce
commit
7ddcaafee5
49 changed files with 208 additions and 275 deletions
2
changelogs/fragments/55862-PSLint-errors-fix.yaml
Normal file
2
changelogs/fragments/55862-PSLint-errors-fix.yaml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- Fixed some PSlint warnings
|
|
@ -93,7 +93,7 @@ Function New-LegacySelfSignedCert
|
||||||
[int]$ValidDays = 1095
|
[int]$ValidDays = 1095
|
||||||
)
|
)
|
||||||
|
|
||||||
$hostnonFQDN = $env:computerName
|
$hostnonFQDN = $env:computerName
|
||||||
$hostFQDN = [System.Net.Dns]::GetHostByName(($env:computerName)).Hostname
|
$hostFQDN = [System.Net.Dns]::GetHostByName(($env:computerName)).Hostname
|
||||||
$SignatureAlgorithm = "SHA256"
|
$SignatureAlgorithm = "SHA256"
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ Function Enable-GlobalHttpFirewallAccess
|
||||||
|
|
||||||
# try to find/enable the default rule first
|
# try to find/enable the default rule first
|
||||||
$add_rule = $false
|
$add_rule = $false
|
||||||
$matching_rules = $fw.Rules | ? { $_.Name -eq "Windows Remote Management (HTTP-In)" }
|
$matching_rules = $fw.Rules | Where-Object { $_.Name -eq "Windows Remote Management (HTTP-In)" }
|
||||||
$rule = $null
|
$rule = $null
|
||||||
If ($matching_rules) {
|
If ($matching_rules) {
|
||||||
If ($matching_rules -isnot [Array]) {
|
If ($matching_rules -isnot [Array]) {
|
||||||
|
@ -180,7 +180,7 @@ Function Enable-GlobalHttpFirewallAccess
|
||||||
Else {
|
Else {
|
||||||
# try to find one with the All or Public profile first
|
# try to find one with the All or Public profile first
|
||||||
Write-Verbose "Found multiple existing HTTP firewall rules..."
|
Write-Verbose "Found multiple existing HTTP firewall rules..."
|
||||||
$rule = $matching_rules | % { $_.Profiles -band 4 }[0]
|
$rule = $matching_rules | ForEach-Object { $_.Profiles -band 4 }[0]
|
||||||
|
|
||||||
If (-not $rule -or $rule -is [Array]) {
|
If (-not $rule -or $rule -is [Array]) {
|
||||||
Write-Verbose "Editing an arbitrary single HTTP firewall rule (multiple existed)"
|
Write-Verbose "Editing an arbitrary single HTTP firewall rule (multiple existed)"
|
||||||
|
@ -310,7 +310,7 @@ if ($token_value -ne 1) {
|
||||||
|
|
||||||
# Make sure there is a SSL listener.
|
# Make sure there is a SSL listener.
|
||||||
$listeners = Get-ChildItem WSMan:\localhost\Listener
|
$listeners = Get-ChildItem WSMan:\localhost\Listener
|
||||||
If (!($listeners | Where {$_.Keys -like "TRANSPORT=HTTPS"}))
|
If (!($listeners | Where-Object {$_.Keys -like "TRANSPORT=HTTPS"}))
|
||||||
{
|
{
|
||||||
# We cannot use New-SelfSignedCertificate on 2012R2 and earlier
|
# We cannot use New-SelfSignedCertificate on 2012R2 and earlier
|
||||||
$thumbprint = New-LegacySelfSignedCert -SubjectName $SubjectName -ValidDays $CertValidityDays
|
$thumbprint = New-LegacySelfSignedCert -SubjectName $SubjectName -ValidDays $CertValidityDays
|
||||||
|
@ -363,9 +363,9 @@ Else
|
||||||
# Check for basic authentication.
|
# Check for basic authentication.
|
||||||
$basicAuthSetting = Get-ChildItem WSMan:\localhost\Service\Auth | Where-Object {$_.Name -eq "Basic"}
|
$basicAuthSetting = Get-ChildItem WSMan:\localhost\Service\Auth | Where-Object {$_.Name -eq "Basic"}
|
||||||
|
|
||||||
If ($DisableBasicAuth)
|
If ($DisableBasicAuth)
|
||||||
{
|
{
|
||||||
If (($basicAuthSetting.Value) -eq $true)
|
If (($basicAuthSetting.Value) -eq $true)
|
||||||
{
|
{
|
||||||
Write-Verbose "Disabling basic auth support."
|
Write-Verbose "Disabling basic auth support."
|
||||||
Set-Item -Path "WSMan:\localhost\Service\Auth\Basic" -Value $false
|
Set-Item -Path "WSMan:\localhost\Service\Auth\Basic" -Value $false
|
||||||
|
@ -375,8 +375,8 @@ If ($DisableBasicAuth)
|
||||||
{
|
{
|
||||||
Write-Verbose "Basic auth is already disabled."
|
Write-Verbose "Basic auth is already disabled."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Else
|
Else
|
||||||
{
|
{
|
||||||
If (($basicAuthSetting.Value) -eq $false)
|
If (($basicAuthSetting.Value) -eq $false)
|
||||||
{
|
{
|
||||||
|
@ -394,7 +394,7 @@ Else
|
||||||
If ($EnableCredSSP)
|
If ($EnableCredSSP)
|
||||||
{
|
{
|
||||||
# Check for CredSSP authentication
|
# Check for CredSSP authentication
|
||||||
$credsspAuthSetting = Get-ChildItem WSMan:\localhost\Service\Auth | Where {$_.Name -eq "CredSSP"}
|
$credsspAuthSetting = Get-ChildItem WSMan:\localhost\Service\Auth | Where-Object {$_.Name -eq "CredSSP"}
|
||||||
If (($credsspAuthSetting.Value) -eq $false)
|
If (($credsspAuthSetting.Value) -eq $false)
|
||||||
{
|
{
|
||||||
Write-Verbose "Enabling CredSSP auth support."
|
Write-Verbose "Enabling CredSSP auth support."
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# some Ansible modules that may use Powershell 3 features, so systems may need
|
# some Ansible modules that may use Powershell 3 features, so systems may need
|
||||||
# to be upgraded. This may be used by a sample playbook. Refer to the windows
|
# to be upgraded. This may be used by a sample playbook. Refer to the windows
|
||||||
# documentation on docs.ansible.com for details.
|
# documentation on docs.ansible.com for details.
|
||||||
#
|
#
|
||||||
# - hosts: windows
|
# - hosts: windows
|
||||||
# tasks:
|
# tasks:
|
||||||
# - script: upgrade_to_ps3.ps1
|
# - script: upgrade_to_ps3.ps1
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
if ($PSVersionTable.psversion.Major -ge 3)
|
if ($PSVersionTable.psversion.Major -ge 3)
|
||||||
{
|
{
|
||||||
write-host "Powershell 3 Installed already; You don't need this"
|
Write-Output "Powershell 3 Installed already; You don't need this"
|
||||||
Exit
|
Exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ if (!(test-path $powershellpath))
|
||||||
# If the Operating System is above 6.2, then you already have PowerShell Version > 3
|
# If the Operating System is above 6.2, then you already have PowerShell Version > 3
|
||||||
if ([Environment]::OSVersion.Version.Major -gt 6)
|
if ([Environment]::OSVersion.Version.Major -gt 6)
|
||||||
{
|
{
|
||||||
write-host "OS is new; upgrade not needed."
|
Write-Output "OS is new; upgrade not needed."
|
||||||
Exit
|
Exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,11 +67,11 @@ $architecture = $ENV:PROCESSOR_ARCHITECTURE
|
||||||
if ($architecture -eq "AMD64")
|
if ($architecture -eq "AMD64")
|
||||||
{
|
{
|
||||||
$architecture = "x64"
|
$architecture = "x64"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$architecture = "x86"
|
$architecture = "x86"
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($osminor -eq 1)
|
if ($osminor -eq 1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,7 +10,7 @@ Function Convert-StringToSnakeCase($string) {
|
||||||
|
|
||||||
# handle when there was nothing before the plural pattern
|
# handle when there was nothing before the plural pattern
|
||||||
if ($replacement_string.StartsWith("_") -and -not $string.StartsWith("_")) {
|
if ($replacement_string.StartsWith("_") -and -not $string.StartsWith("_")) {
|
||||||
$replacement_string = $replacement_string.Substring(1)
|
$replacement_string = $replacement_string.Substring(1)
|
||||||
}
|
}
|
||||||
$string = $replacement_string
|
$string = $replacement_string
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ Function Convert-DictToSnakeCase($dict) {
|
||||||
|
|
||||||
$value = $dict_entry.Value
|
$value = $dict_entry.Value
|
||||||
if ($value -is [Hashtable]) {
|
if ($value -is [Hashtable]) {
|
||||||
$snake_dict.$snake_key = Convert-DictToSnakeCase -dict $value
|
$snake_dict.$snake_key = Convert-DictToSnakeCase -dict $value
|
||||||
} elseif ($value -is [Array] -or $value -is [System.Collections.ArrayList]) {
|
} elseif ($value -is [Array] -or $value -is [System.Collections.ArrayList]) {
|
||||||
$snake_dict.$snake_key = Convert-ListToSnakeCase -list $value
|
$snake_dict.$snake_key = Convert-ListToSnakeCase -list $value
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -360,7 +360,7 @@ Function Get-PendingRebootStatus
|
||||||
Check if reboot is required, if so notify CA.
|
Check if reboot is required, if so notify CA.
|
||||||
Function returns true if computer has a pending reboot
|
Function returns true if computer has a pending reboot
|
||||||
#>
|
#>
|
||||||
$featureData = Invoke-WmiMethod -EA Ignore -Name GetServerFeature -Namespace root\microsoft\windows\servermanager -Class MSFT_ServerManagerTasks
|
$featureData = Invoke-CimMethod -EA Ignore -Name GetServerFeature -Namespace root\microsoft\windows\servermanager -Class MSFT_ServerManagerTasks
|
||||||
$regData = Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" "PendingFileRenameOperations" -EA Ignore
|
$regData = Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" "PendingFileRenameOperations" -EA Ignore
|
||||||
$CBSRebootStatus = Get-ChildItem "HKLM:\\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing" -ErrorAction SilentlyContinue| Where-Object {$_.PSChildName -eq "RebootPending"}
|
$CBSRebootStatus = Get-ChildItem "HKLM:\\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing" -ErrorAction SilentlyContinue| Where-Object {$_.PSChildName -eq "RebootPending"}
|
||||||
if(($featureData -and $featureData.RequiresReboot) -or $regData -or $CBSRebootStatus)
|
if(($featureData -and $featureData.RequiresReboot) -or $regData -or $CBSRebootStatus)
|
||||||
|
@ -375,4 +375,3 @@ Function Get-PendingRebootStatus
|
||||||
|
|
||||||
# this line must stay at the bottom to ensure all defined module parts are exported
|
# this line must stay at the bottom to ensure all defined module parts are exported
|
||||||
Export-ModuleMember -Alias * -Function * -Cmdlet *
|
Export-ModuleMember -Alias * -Function * -Cmdlet *
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,7 @@ namespace Ansible
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
FindClose(findHandle);
|
FindClose(findHandle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.Count > 1)
|
if (result.Count > 1)
|
||||||
|
@ -271,7 +271,7 @@ namespace Ansible
|
||||||
IntPtr.Zero);
|
IntPtr.Zero);
|
||||||
|
|
||||||
if (fileHandle.IsInvalid)
|
if (fileHandle.IsInvalid)
|
||||||
throw new LinkUtilWin32Exception(String.Format("CreateFile({0}) failed", linkPath));
|
throw new LinkUtilWin32Exception(String.Format("CreateFile({0}) failed", linkPath));
|
||||||
|
|
||||||
REPARSE_DATA_BUFFER buffer = new REPARSE_DATA_BUFFER();
|
REPARSE_DATA_BUFFER buffer = new REPARSE_DATA_BUFFER();
|
||||||
UInt32 bytesReturned;
|
UInt32 bytesReturned;
|
||||||
|
@ -428,7 +428,7 @@ Function New-Link($link_path, $link_target, $link_type) {
|
||||||
if (-not (Test-Path -LiteralPath $link_target)) {
|
if (-not (Test-Path -LiteralPath $link_target)) {
|
||||||
throw "link_target '$link_target' does not exist, cannot create link"
|
throw "link_target '$link_target' does not exist, cannot create link"
|
||||||
}
|
}
|
||||||
|
|
||||||
switch($link_type) {
|
switch($link_type) {
|
||||||
"link" {
|
"link" {
|
||||||
$type = [Ansible.LinkType]::SymbolicLink
|
$type = [Ansible.LinkType]::SymbolicLink
|
||||||
|
|
|
@ -79,13 +79,13 @@ Function Convert-ToSID {
|
||||||
$account = New-Object System.Security.Principal.NTAccount($username)
|
$account = New-Object System.Security.Principal.NTAccount($username)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$account_sid = $account.Translate([System.Security.Principal.SecurityIdentifier])
|
$account_sid = $account.Translate([System.Security.Principal.SecurityIdentifier])
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json @{} "account_name $account_name is not a valid account, cannot get SID: $($_.Exception.Message)"
|
Fail-Json @{} "account_name $account_name is not a valid account, cannot get SID: $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
|
|
||||||
return $account_sid.Value
|
return $account_sid.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ Function Get-MachineSid {
|
||||||
# admin account (ends with -500) and lops it off to get the machine sid.
|
# admin account (ends with -500) and lops it off to get the machine sid.
|
||||||
|
|
||||||
$admins_sid = "S-1-5-32-544"
|
$admins_sid = "S-1-5-32-544"
|
||||||
$admin_group = ([Security.Principal.SecurityIdentifier]$admins_sid).Translate([Security.Principal.NTAccount]).Value
|
$admin_group = ([Security.Principal.SecurityIdentifier]$admins_sid).Translate([Security.Principal.NTAccount]).Value
|
||||||
|
|
||||||
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
|
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
|
||||||
$principal_context = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine)
|
$principal_context = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine)
|
||||||
|
@ -134,7 +134,7 @@ $osversion = [Environment]::OSVersion
|
||||||
|
|
||||||
if($gather_subset.Contains('all_ipv4_addresses') -or $gather_subset.Contains('all_ipv6_addresses')) {
|
if($gather_subset.Contains('all_ipv4_addresses') -or $gather_subset.Contains('all_ipv6_addresses')) {
|
||||||
$netcfg = Get-LazyCimInstance Win32_NetworkAdapterConfiguration
|
$netcfg = Get-LazyCimInstance Win32_NetworkAdapterConfiguration
|
||||||
|
|
||||||
# TODO: split v4/v6 properly, return in separate keys
|
# TODO: split v4/v6 properly, return in separate keys
|
||||||
$ips = @()
|
$ips = @()
|
||||||
Foreach ($ip in $netcfg.IPAddress) {
|
Foreach ($ip in $netcfg.IPAddress) {
|
||||||
|
@ -212,9 +212,9 @@ if($gather_subset.Contains('distribution')) {
|
||||||
if($gather_subset.Contains('env')) {
|
if($gather_subset.Contains('env')) {
|
||||||
$env_vars = @{ }
|
$env_vars = @{ }
|
||||||
foreach ($item in Get-ChildItem Env:) {
|
foreach ($item in Get-ChildItem Env:) {
|
||||||
$name = $item | select -ExpandProperty Name
|
$name = $item | Select-Object -ExpandProperty Name
|
||||||
# Powershell ConvertTo-Json fails if string ends with \
|
# Powershell ConvertTo-Json fails if string ends with \
|
||||||
$value = ($item | select -ExpandProperty Value).TrimEnd("\")
|
$value = ($item | Select-Object -ExpandProperty Value).TrimEnd("\")
|
||||||
$env_vars.Add($name, $value)
|
$env_vars.Add($name, $value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ if($gather_subset.Contains('env')) {
|
||||||
if($gather_subset.Contains('facter')) {
|
if($gather_subset.Contains('facter')) {
|
||||||
# See if Facter is on the System Path
|
# See if Facter is on the System Path
|
||||||
Try {
|
Try {
|
||||||
$facter_exe = Get-Command facter -ErrorAction Stop
|
Get-Command facter -ErrorAction Stop > $null
|
||||||
$facter_installed = $true
|
$facter_installed = $true
|
||||||
} Catch {
|
} Catch {
|
||||||
$facter_installed = $false
|
$facter_installed = $false
|
||||||
|
@ -234,7 +234,7 @@ if($gather_subset.Contains('facter')) {
|
||||||
|
|
||||||
# Get JSON from Facter, and parse it out.
|
# Get JSON from Facter, and parse it out.
|
||||||
if ($facter_installed) {
|
if ($facter_installed) {
|
||||||
&facter -j | Tee-Object -Variable facter_output | Out-Null
|
&facter -j | Tee-Object -Variable facter_output > $null
|
||||||
$facts = "$facter_output" | ConvertFrom-Json
|
$facts = "$facter_output" | ConvertFrom-Json
|
||||||
ForEach($fact in $facts.PSObject.Properties) {
|
ForEach($fact in $facts.PSObject.Properties) {
|
||||||
$fact_name = $fact.Name
|
$fact_name = $fact.Name
|
||||||
|
@ -246,7 +246,7 @@ if($gather_subset.Contains('facter')) {
|
||||||
if($gather_subset.Contains('interfaces')) {
|
if($gather_subset.Contains('interfaces')) {
|
||||||
$netcfg = Get-LazyCimInstance Win32_NetworkAdapterConfiguration
|
$netcfg = Get-LazyCimInstance Win32_NetworkAdapterConfiguration
|
||||||
$ActiveNetcfg = @()
|
$ActiveNetcfg = @()
|
||||||
$ActiveNetcfg += $netcfg | where {$_.ipaddress -ne $null}
|
$ActiveNetcfg += $netcfg | Where-Object {$_.ipaddress -ne $null}
|
||||||
|
|
||||||
$namespaces = Get-LazyCimInstance __Namespace -namespace root
|
$namespaces = Get-LazyCimInstance __Namespace -namespace root
|
||||||
if ($namespaces | Where-Object { $_.Name -eq "StandardCimv" }) {
|
if ($namespaces | Where-Object { $_.Name -eq "StandardCimv" }) {
|
||||||
|
@ -254,7 +254,7 @@ if($gather_subset.Contains('interfaces')) {
|
||||||
$guid_key = "InterfaceGUID"
|
$guid_key = "InterfaceGUID"
|
||||||
$name_key = "Name"
|
$name_key = "Name"
|
||||||
} else {
|
} else {
|
||||||
$net_adapters = Get-LazyCimInstance Win32_NetworkAdapter
|
$net_adapters = Get-LazyCimInstance Win32_NetworkAdapter
|
||||||
$guid_key = "GUID"
|
$guid_key = "GUID"
|
||||||
$name_key = "NetConnectionID"
|
$name_key = "NetConnectionID"
|
||||||
}
|
}
|
||||||
|
@ -412,7 +412,7 @@ if($gather_subset.Contains('windows_domain')) {
|
||||||
if($gather_subset.Contains('winrm')) {
|
if($gather_subset.Contains('winrm')) {
|
||||||
|
|
||||||
$winrm_https_listener_parent_paths = Get-ChildItem -Path WSMan:\localhost\Listener -Recurse -ErrorAction SilentlyContinue | `
|
$winrm_https_listener_parent_paths = Get-ChildItem -Path WSMan:\localhost\Listener -Recurse -ErrorAction SilentlyContinue | `
|
||||||
Where-Object {$_.PSChildName -eq "Transport" -and $_.Value -eq "HTTPS"} | select PSParentPath
|
Where-Object {$_.PSChildName -eq "Transport" -and $_.Value -eq "HTTPS"} | Select-Object PSParentPath
|
||||||
if ($winrm_https_listener_parent_paths -isnot [array]) {
|
if ($winrm_https_listener_parent_paths -isnot [array]) {
|
||||||
$winrm_https_listener_parent_paths = @($winrm_https_listener_parent_paths)
|
$winrm_https_listener_parent_paths = @($winrm_https_listener_parent_paths)
|
||||||
}
|
}
|
||||||
|
@ -429,14 +429,16 @@ if($gather_subset.Contains('winrm')) {
|
||||||
|
|
||||||
$winrm_cert_thumbprints = @()
|
$winrm_cert_thumbprints = @()
|
||||||
foreach ($https_listener in $https_listeners) {
|
foreach ($https_listener in $https_listeners) {
|
||||||
$winrm_cert_thumbprints += $https_listener | where {$_.Name -EQ "CertificateThumbprint" } | select Value
|
$winrm_cert_thumbprints += $https_listener | Where-Object {$_.Name -EQ "CertificateThumbprint" } | Select-Object Value
|
||||||
}
|
}
|
||||||
|
|
||||||
$winrm_cert_expiry = @()
|
$winrm_cert_expiry = @()
|
||||||
foreach ($winrm_cert_thumbprint in $winrm_cert_thumbprints) {
|
foreach ($winrm_cert_thumbprint in $winrm_cert_thumbprints) {
|
||||||
Try {
|
Try {
|
||||||
$winrm_cert_expiry += Get-ChildItem -Path Cert:\LocalMachine\My | where Thumbprint -EQ $winrm_cert_thumbprint.Value.ToString().ToUpper() | select NotAfter
|
$winrm_cert_expiry += Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object Thumbprint -EQ $winrm_cert_thumbprint.Value.ToString().ToUpper() | Select-Object NotAfter
|
||||||
} Catch {}
|
} Catch {
|
||||||
|
Add-Warning -obj $result -message "Error during certificate expiration retrieval: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$winrm_cert_expirations = $winrm_cert_expiry | Sort-Object NotAfter
|
$winrm_cert_expirations = $winrm_cert_expiry | Sort-Object NotAfter
|
||||||
|
@ -460,14 +462,14 @@ if($gather_subset.Contains('virtual')) {
|
||||||
$machine_role="guest"
|
$machine_role="guest"
|
||||||
}
|
}
|
||||||
|
|
||||||
"VirtualBox" {
|
"VirtualBox" {
|
||||||
$machine_type="VirtualBox"
|
$machine_type="VirtualBox"
|
||||||
$machine_role="guest"
|
$machine_role="guest"
|
||||||
}
|
}
|
||||||
|
|
||||||
"HVM domU" {
|
"HVM domU" {
|
||||||
$machine_type="Xen"
|
$machine_type="Xen"
|
||||||
$machine_role="guest"
|
$machine_role="guest"
|
||||||
}
|
}
|
||||||
|
|
||||||
default {
|
default {
|
||||||
|
@ -475,7 +477,7 @@ if($gather_subset.Contains('virtual')) {
|
||||||
$machine_role="NA"
|
$machine_role="NA"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$ansible_facts += @{
|
$ansible_facts += @{
|
||||||
ansible_virtualization_role = $machine_role
|
ansible_virtualization_role = $machine_role
|
||||||
ansible_virtualization_type = $machine_type
|
ansible_virtualization_type = $machine_type
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!powershell
|
#!powershell
|
||||||
|
|
||||||
# Copyright: (c) 2018, Ansible Project
|
# Copyright: (c) 2018, Ansible Project
|
||||||
# Copyright: (c) 2018, Simon Baerlocher <s.baerlocher@sbaerlocher.ch>
|
# Copyright: (c) 2018, Simon Baerlocher <s.baerlocher@sbaerlocher.ch>
|
||||||
# Copyright: (c) 2018, ITIGO AG <opensource@itigo.ch>
|
# Copyright: (c) 2018, ITIGO AG <opensource@itigo.ch>
|
||||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
#Requires -Module Ansible.ModuleUtils.ArgvParser
|
#Requires -Module Ansible.ModuleUtils.ArgvParser
|
||||||
|
|
|
@ -34,7 +34,6 @@ $force = Get-AnsibleParam -obj $params -name "force" -type "bool" -default $true
|
||||||
# used in query mode, contains the local files/directories/symlinks that are to be copied
|
# used in query mode, contains the local files/directories/symlinks that are to be copied
|
||||||
$files = Get-AnsibleParam -obj $params -name "files" -type "list"
|
$files = Get-AnsibleParam -obj $params -name "files" -type "list"
|
||||||
$directories = Get-AnsibleParam -obj $params -name "directories" -type "list"
|
$directories = Get-AnsibleParam -obj $params -name "directories" -type "list"
|
||||||
$symlinks = Get-AnsibleParam -obj $params -name "symlinks" -type "list"
|
|
||||||
|
|
||||||
$result = @{
|
$result = @{
|
||||||
changed = $false
|
changed = $false
|
||||||
|
|
|
@ -513,19 +513,19 @@ Function ConvertTo-CredentialAttribute {
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Get-DiffInfo {
|
Function Get-DiffInfo {
|
||||||
param($Credential)
|
param($AnsibleCredential)
|
||||||
|
|
||||||
$diff = @{
|
$diff = @{
|
||||||
alias = $Credential.TargetAlias
|
alias = $AnsibleCredential.TargetAlias
|
||||||
attributes = [System.Collections.ArrayList]@()
|
attributes = [System.Collections.ArrayList]@()
|
||||||
comment = $Credential.Comment
|
comment = $AnsibleCredential.Comment
|
||||||
name = $Credential.TargetName
|
name = $AnsibleCredential.TargetName
|
||||||
persistence = $Credential.Persist.ToString()
|
persistence = $AnsibleCredential.Persist.ToString()
|
||||||
type = $Credential.Type.ToString()
|
type = $AnsibleCredential.Type.ToString()
|
||||||
username = $Credential.UserName
|
username = $AnsibleCredential.UserName
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($attribute in $Credential.Attributes) {
|
foreach ($attribute in $AnsibleCredential.Attributes) {
|
||||||
$attribute_info = @{
|
$attribute_info = @{
|
||||||
name = $attribute.Keyword
|
name = $attribute.Keyword
|
||||||
data = $null
|
data = $null
|
||||||
|
@ -573,7 +573,7 @@ $type = switch ($type) {
|
||||||
|
|
||||||
$existing_credential = [Ansible.CredentialManager.Credential]::GetCredential($name, $type)
|
$existing_credential = [Ansible.CredentialManager.Credential]::GetCredential($name, $type)
|
||||||
if ($null -ne $existing_credential) {
|
if ($null -ne $existing_credential) {
|
||||||
$module.Diff.before = Get-DiffInfo -Credential $existing_credential
|
$module.Diff.before = Get-DiffInfo -AnsibleCredential $existing_credential
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($state -eq "absent") {
|
if ($state -eq "absent") {
|
||||||
|
@ -654,7 +654,7 @@ if ($state -eq "absent") {
|
||||||
if (($new_keyword -cne $existing_keyword) -or ($new_value -ne $existing_value)) {
|
if (($new_keyword -cne $existing_keyword) -or ($new_value -ne $existing_value)) {
|
||||||
$attribute_changed = $true
|
$attribute_changed = $true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -705,9 +705,8 @@ if ($state -eq "absent") {
|
||||||
} else {
|
} else {
|
||||||
# Get a new copy of the credential and use that to set the after diff
|
# Get a new copy of the credential and use that to set the after diff
|
||||||
$new_credential = [Ansible.CredentialManager.Credential]::GetCredential($name, $type)
|
$new_credential = [Ansible.CredentialManager.Credential]::GetCredential($name, $type)
|
||||||
$module.Diff.after = Get-DiffInfo -Credential $new_credential
|
$module.Diff.after = Get-DiffInfo -AnsibleCredential $new_credential
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$module.ExitJson()
|
$module.ExitJson()
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@ try {
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json -obj $result -message "Failed to search the disks on the target: $($_.Exception.Message)"
|
Fail-Json -obj $result -message "Failed to search the disks on the target: $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
[int32]$diskcount = $disks | Measure-Object | Select-Object -ExpandProperty Count
|
|
||||||
foreach ($disk in $disks) {
|
foreach ($disk in $disks) {
|
||||||
$disk_info = @{}
|
$disk_info = @{}
|
||||||
$pdisk = Get-PhysicalDisk -ErrorAction SilentlyContinue | Where-Object {
|
$pdisk = Get-PhysicalDisk -ErrorAction SilentlyContinue | Where-Object {
|
||||||
|
|
|
@ -32,7 +32,7 @@ If($state -eq "present") {
|
||||||
# the actual mount is async, so the CIMInstance result may not immediately contain the data we need
|
# the actual mount is async, so the CIMInstance result may not immediately contain the data we need
|
||||||
$retry_count = 0
|
$retry_count = 0
|
||||||
While(-not $di.Attached -and $retry_count -lt 5) {
|
While(-not $di.Attached -and $retry_count -lt 5) {
|
||||||
Sleep -Seconds 1 | Out-Null
|
Start-Sleep -Seconds 1 > $null
|
||||||
$di = $di | Get-DiskImage
|
$di = $di | Get-DiskImage
|
||||||
$retry_count++
|
$retry_count++
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ ElseIf($state -eq "absent") {
|
||||||
If($di.Attached) {
|
If($di.Attached) {
|
||||||
$result.changed = $true
|
$result.changed = $true
|
||||||
If(-not $check_mode) {
|
If(-not $check_mode) {
|
||||||
Dismount-DiskImage $image_path | Out-Null
|
Dismount-DiskImage $image_path > $null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,9 @@ Function Write-DebugLog {
|
||||||
|
|
||||||
Write-Debug $msg
|
Write-Debug $msg
|
||||||
|
|
||||||
|
$log_path = $null
|
||||||
|
$log_path = Get-AnsibleParam -obj $params -name "log_path"
|
||||||
|
|
||||||
if($log_path) {
|
if($log_path) {
|
||||||
Add-Content $log_path $msg
|
Add-Content $log_path $msg
|
||||||
}
|
}
|
||||||
|
@ -47,7 +50,7 @@ Function Get-NetAdapterLegacy {
|
||||||
@{Name="ifIndex"; Expression={$_.DeviceID}}
|
@{Name="ifIndex"; Expression={$_.DeviceID}}
|
||||||
)
|
)
|
||||||
|
|
||||||
$res = Get-WmiObject @wmiargs | Select-Object -Property $wmiprop
|
$res = Get-CIMInstance @wmiargs | Select-Object -Property $wmiprop
|
||||||
|
|
||||||
If(@($res).Count -eq 0 -and -not $Name.Contains("*")) {
|
If(@($res).Count -eq 0 -and -not $Name.Contains("*")) {
|
||||||
throw "Get-NetAdapterLegacy: No Win32_NetworkAdapter objects found with property 'NetConnectionID' equal to '$Name'"
|
throw "Get-NetAdapterLegacy: No Win32_NetworkAdapter objects found with property 'NetConnectionID' equal to '$Name'"
|
||||||
|
@ -66,7 +69,7 @@ Function Get-DnsClientServerAddressLegacy {
|
||||||
|
|
||||||
$idx = Get-NetAdapter -Name $InterfaceAlias | Select-Object -ExpandProperty ifIndex
|
$idx = Get-NetAdapter -Name $InterfaceAlias | Select-Object -ExpandProperty ifIndex
|
||||||
|
|
||||||
$adapter_config = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "Index=$idx"
|
$adapter_config = Get-CIMInstance Win32_NetworkAdapterConfiguration -Filter "Index=$idx"
|
||||||
|
|
||||||
return @(
|
return @(
|
||||||
# IPv4 values
|
# IPv4 values
|
||||||
|
@ -90,7 +93,7 @@ Function Set-DnsClientServerAddressLegacy {
|
||||||
|
|
||||||
$idx = Get-NetAdapter -Name $InterfaceAlias | Select-Object -ExpandProperty ifIndex
|
$idx = Get-NetAdapter -Name $InterfaceAlias | Select-Object -ExpandProperty ifIndex
|
||||||
|
|
||||||
$adapter_config = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "Index=$idx"
|
$adapter_config = Get-CIMInstance Win32_NetworkAdapterConfiguration -Filter "Index=$idx"
|
||||||
|
|
||||||
If($ResetServerAddresses) {
|
If($ResetServerAddresses) {
|
||||||
$res = $adapter_config.SetDNSServerSearchOrder()
|
$res = $adapter_config.SetDNSServerSearchOrder()
|
||||||
|
@ -157,7 +160,7 @@ Function Set-DnsClientAddresses
|
||||||
)
|
)
|
||||||
|
|
||||||
Write-DebugLog ("Setting DNS addresses for adapter {0} to ({1})" -f $adapter_name, ($ipv4_addresses -join ", "))
|
Write-DebugLog ("Setting DNS addresses for adapter {0} to ({1})" -f $adapter_name, ($ipv4_addresses -join ", "))
|
||||||
|
|
||||||
If ($null -eq $ipv4_addresses) {
|
If ($null -eq $ipv4_addresses) {
|
||||||
Set-DnsClientServerAddress -InterfaceAlias $adapter_name -ResetServerAddress
|
Set-DnsClientServerAddress -InterfaceAlias $adapter_name -ResetServerAddress
|
||||||
}
|
}
|
||||||
|
@ -166,7 +169,7 @@ Function Set-DnsClientAddresses
|
||||||
# this silently ignores invalid IPs, so we validate parseability ourselves up front...
|
# this silently ignores invalid IPs, so we validate parseability ourselves up front...
|
||||||
Set-DnsClientServerAddress -InterfaceAlias $adapter_name -ServerAddresses $ipv4_addresses
|
Set-DnsClientServerAddress -InterfaceAlias $adapter_name -ServerAddresses $ipv4_addresses
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: implement IPv6
|
# TODO: implement IPv6
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,14 +182,13 @@ $ipv4_addresses = Get-AnsibleParam $params "ipv4_addresses" -FailIfEmpty $result
|
||||||
|
|
||||||
If($ipv4_addresses -is [string]) {
|
If($ipv4_addresses -is [string]) {
|
||||||
If($ipv4_addresses.Length -gt 0) {
|
If($ipv4_addresses.Length -gt 0) {
|
||||||
$ipv4_address = @($ipv4_addresses)
|
$ipv4_addresses = @($ipv4_addresses)
|
||||||
}
|
}
|
||||||
Else {
|
Else {
|
||||||
$ipv4_addresses = @()
|
$ipv4_addresses = @()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$global:log_path = Get-AnsibleParam $params "log_path"
|
|
||||||
$check_mode = Get-AnsibleParam $params "_ansible_check_mode" -Default $false
|
$check_mode = Get-AnsibleParam $params "_ansible_check_mode" -Default $false
|
||||||
|
|
||||||
Try {
|
Try {
|
||||||
|
@ -206,7 +208,7 @@ Try {
|
||||||
|
|
||||||
Write-DebugLog ("Validating IP addresses ({0})" -f ($ipv4_addresses -join ", "))
|
Write-DebugLog ("Validating IP addresses ({0})" -f ($ipv4_addresses -join ", "))
|
||||||
|
|
||||||
$invalid_addresses = @($ipv4_addresses | ? { -not (Validate-IPAddress $_) })
|
$invalid_addresses = @($ipv4_addresses | Where-Object { -not (Validate-IPAddress $_) })
|
||||||
|
|
||||||
If($invalid_addresses.Count -gt 0) {
|
If($invalid_addresses.Count -gt 0) {
|
||||||
throw "Invalid IP address(es): ({0})" -f ($invalid_addresses -join ", ")
|
throw "Invalid IP address(es): ({0})" -f ($invalid_addresses -join ", ")
|
||||||
|
@ -235,4 +237,3 @@ Catch {
|
||||||
|
|
||||||
Throw
|
Throw
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ Function Ensure-Prereqs {
|
||||||
$awf = Add-WindowsFeature AD-Domain-Services -WhatIf:$check_mode
|
$awf = Add-WindowsFeature AD-Domain-Services -WhatIf:$check_mode
|
||||||
$result.reboot_required = $awf.RestartNeeded
|
$result.reboot_required = $awf.RestartNeeded
|
||||||
# FUTURE: Check if reboot necessary
|
# FUTURE: Check if reboot necessary
|
||||||
|
|
||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
return $false
|
return $false
|
||||||
|
|
|
@ -10,6 +10,8 @@ Set-StrictMode -Version 2
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
$ConfirmPreference = "None"
|
$ConfirmPreference = "None"
|
||||||
|
|
||||||
|
$log_path = $null
|
||||||
|
|
||||||
Function Write-DebugLog {
|
Function Write-DebugLog {
|
||||||
Param(
|
Param(
|
||||||
[string]$msg
|
[string]$msg
|
||||||
|
@ -21,7 +23,6 @@ Function Write-DebugLog {
|
||||||
$msg = "$date_str $msg"
|
$msg = "$date_str $msg"
|
||||||
|
|
||||||
Write-Debug $msg
|
Write-Debug $msg
|
||||||
|
|
||||||
if($log_path) {
|
if($log_path) {
|
||||||
Add-Content $log_path $msg
|
Add-Content $log_path $msg
|
||||||
}
|
}
|
||||||
|
@ -39,17 +40,17 @@ Function Get-MissingFeatures {
|
||||||
}
|
}
|
||||||
|
|
||||||
$missing_features = @($features | Where-Object InstallState -ne Installed)
|
$missing_features = @($features | Where-Object InstallState -ne Installed)
|
||||||
|
|
||||||
return ,$missing_features # no, the comma's not a typo- allows us to return an empty array
|
return ,$missing_features # no, the comma's not a typo- allows us to return an empty array
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Ensure-FeatureInstallation {
|
Function Ensure-FeatureInstallation {
|
||||||
# ensure RSAT-ADDS and AD-Domain-Services features are installed
|
# ensure RSAT-ADDS and AD-Domain-Services features are installed
|
||||||
|
|
||||||
Write-DebugLog "Ensuring required Windows features are installed..."
|
Write-DebugLog "Ensuring required Windows features are installed..."
|
||||||
$feature_result = Install-WindowsFeature $required_features
|
$feature_result = Install-WindowsFeature $required_features
|
||||||
$result.reboot_required = $feature_result.RestartNeeded
|
$result.reboot_required = $feature_result.RestartNeeded
|
||||||
|
|
||||||
If(-not $feature_result.Success) {
|
If(-not $feature_result.Success) {
|
||||||
Exit-Json -message ("Error installing AD-Domain-Services and RSAT-ADDS features: {0}" -f ($feature_result | Out-String))
|
Exit-Json -message ("Error installing AD-Domain-Services and RSAT-ADDS features: {0}" -f ($feature_result | Out-String))
|
||||||
}
|
}
|
||||||
|
@ -59,7 +60,7 @@ Function Ensure-FeatureInstallation {
|
||||||
Function Get-DomainControllerDomain {
|
Function Get-DomainControllerDomain {
|
||||||
Write-DebugLog "Checking for domain controller role and domain name"
|
Write-DebugLog "Checking for domain controller role and domain name"
|
||||||
|
|
||||||
$sys_cim = Get-WmiObject Win32_ComputerSystem
|
$sys_cim = Get-CIMInstance Win32_ComputerSystem
|
||||||
|
|
||||||
$is_dc = $sys_cim.DomainRole -in (4,5) # backup/primary DC
|
$is_dc = $sys_cim.DomainRole -in (4,5) # backup/primary DC
|
||||||
# this will be our workgroup or joined-domain if we're not a DC
|
# this will be our workgroup or joined-domain if we're not a DC
|
||||||
|
@ -106,9 +107,12 @@ $read_only = Get-AnsibleParam -obj $params -name "read_only" -type "bool" -defau
|
||||||
$site_name = Get-AnsibleParam -obj $params -name "site_name" -type "str" -failifempty $read_only
|
$site_name = Get-AnsibleParam -obj $params -name "site_name" -type "str" -failifempty $read_only
|
||||||
|
|
||||||
$state = Get-AnsibleParam -obj $params -name "state" -validateset ("domain_controller", "member_server") -failifempty $result
|
$state = Get-AnsibleParam -obj $params -name "state" -validateset ("domain_controller", "member_server") -failifempty $result
|
||||||
|
|
||||||
$log_path = Get-AnsibleParam -obj $params -name "log_path"
|
$log_path = Get-AnsibleParam -obj $params -name "log_path"
|
||||||
$_ansible_check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -default $false
|
$_ansible_check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -default $false
|
||||||
|
|
||||||
|
$global:log_path = $log_path
|
||||||
|
|
||||||
Try {
|
Try {
|
||||||
# ensure target OS support; < 2012 doesn't have cmdlet support for DC promotion
|
# ensure target OS support; < 2012 doesn't have cmdlet support for DC promotion
|
||||||
If(-not (Get-Command Install-WindowsFeature -ErrorAction SilentlyContinue)) {
|
If(-not (Get-Command Install-WindowsFeature -ErrorAction SilentlyContinue)) {
|
||||||
|
@ -208,7 +212,7 @@ Try {
|
||||||
if ($site_name) {
|
if ($site_name) {
|
||||||
$install_params.SiteName = $site_name
|
$install_params.SiteName = $site_name
|
||||||
}
|
}
|
||||||
$install_result = Install-ADDSDomainController -NoRebootOnCompletion -Force @install_params
|
Install-ADDSDomainController -NoRebootOnCompletion -Force @install_params
|
||||||
|
|
||||||
Write-DebugLog "Installation complete, trying to start the Netlogon service"
|
Write-DebugLog "Installation complete, trying to start the Netlogon service"
|
||||||
# The Netlogon service is set to auto start but is not started. This is
|
# The Netlogon service is set to auto start but is not started. This is
|
||||||
|
@ -253,7 +257,7 @@ Try {
|
||||||
$local_admin_secure = $local_admin_password | ConvertTo-SecureString -AsPlainText -Force
|
$local_admin_secure = $local_admin_password | ConvertTo-SecureString -AsPlainText -Force
|
||||||
|
|
||||||
Write-DebugLog "Uninstalling domain controller..."
|
Write-DebugLog "Uninstalling domain controller..."
|
||||||
$uninstall_result = Uninstall-ADDSDomainController -NoRebootOnCompletion -LocalAdministratorPassword $local_admin_secure -Credential $domain_admin_cred
|
Uninstall-ADDSDomainController -NoRebootOnCompletion -LocalAdministratorPassword $local_admin_secure -Credential $domain_admin_cred
|
||||||
Write-DebugLog "Uninstallation complete, needs reboot..."
|
Write-DebugLog "Uninstallation complete, needs reboot..."
|
||||||
}
|
}
|
||||||
default { throw ("invalid state {0}" -f $state) }
|
default { throw ("invalid state {0}" -f $state) }
|
||||||
|
@ -268,4 +272,3 @@ Catch {
|
||||||
|
|
||||||
Throw
|
Throw
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -204,7 +204,7 @@ if ($state -eq "absent") {
|
||||||
if ($existing_value -cne $attribute_value) {
|
if ($existing_value -cne $attribute_value) {
|
||||||
$replace_attributes.$attribute_name = $attribute_value
|
$replace_attributes.$attribute_name = $attribute_value
|
||||||
$diff_text += "-$attribute_name = $existing_value`n+$attribute_name = $attribute_value`n"
|
$diff_text += "-$attribute_name = $existing_value`n+$attribute_name = $attribute_value`n"
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$add_attributes.$attribute_name = $attribute_value
|
$add_attributes.$attribute_name = $attribute_value
|
||||||
$diff_text += "+$attribute_name = $attribute_value`n"
|
$diff_text += "+$attribute_name = $attribute_value`n"
|
||||||
|
|
|
@ -9,9 +9,11 @@ Set-StrictMode -Version 2
|
||||||
|
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
$log_path = $null
|
||||||
|
|
||||||
Function Write-DebugLog {
|
Function Write-DebugLog {
|
||||||
Param(
|
Param(
|
||||||
[string]$msg
|
[string]$msg
|
||||||
)
|
)
|
||||||
|
|
||||||
$DebugPreference = "Continue"
|
$DebugPreference = "Continue"
|
||||||
|
@ -19,7 +21,6 @@ Function Write-DebugLog {
|
||||||
$msg = "$date_str $msg"
|
$msg = "$date_str $msg"
|
||||||
|
|
||||||
Write-Debug $msg
|
Write-Debug $msg
|
||||||
|
|
||||||
if($log_path) {
|
if($log_path) {
|
||||||
Add-Content $log_path $msg
|
Add-Content $log_path $msg
|
||||||
}
|
}
|
||||||
|
@ -45,11 +46,11 @@ Function Get-DomainMembershipMatch {
|
||||||
}
|
}
|
||||||
catch [System.Security.Authentication.AuthenticationException] {
|
catch [System.Security.Authentication.AuthenticationException] {
|
||||||
Write-DebugLog "Failed to get computer domain. Attempting a different method."
|
Write-DebugLog "Failed to get computer domain. Attempting a different method."
|
||||||
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
|
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
|
||||||
$user_principal = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current
|
$user_principal = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current
|
||||||
If ($user_principal.ContextType -eq "Machine") {
|
If ($user_principal.ContextType -eq "Machine") {
|
||||||
$current_dns_domain = (Get-CimInstance -ClassName Win32_ComputerSystem -Property Domain).Domain
|
$current_dns_domain = (Get-CimInstance -ClassName Win32_ComputerSystem -Property Domain).Domain
|
||||||
|
|
||||||
$domain_match = $current_dns_domain -eq $dns_domain_name
|
$domain_match = $current_dns_domain -eq $dns_domain_name
|
||||||
|
|
||||||
Write-DebugLog ("current domain {0} matches {1}: {2}" -f $current_dns_domain, $dns_domain_name, $domain_match)
|
Write-DebugLog ("current domain {0} matches {1}: {2}" -f $current_dns_domain, $dns_domain_name, $domain_match)
|
||||||
|
@ -91,7 +92,7 @@ Function Get-HostnameMatch {
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Is-DomainJoined {
|
Function Is-DomainJoined {
|
||||||
return (Get-WmiObject Win32_ComputerSystem).PartOfDomain
|
return (Get-CIMInstance Win32_ComputerSystem).PartOfDomain
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Join-Domain {
|
Function Join-Domain {
|
||||||
|
@ -135,7 +136,7 @@ Function Join-Domain {
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Get-Workgroup {
|
Function Get-Workgroup {
|
||||||
return (Get-WmiObject Win32_ComputerSystem).Workgroup
|
return (Get-CIMInstance Win32_ComputerSystem).Workgroup
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Set-Workgroup {
|
Function Set-Workgroup {
|
||||||
|
@ -145,15 +146,14 @@ Function Set-Workgroup {
|
||||||
|
|
||||||
Write-DebugLog ("Calling JoinDomainOrWorkgroup with workgroup {0}" -f $workgroup_name)
|
Write-DebugLog ("Calling JoinDomainOrWorkgroup with workgroup {0}" -f $workgroup_name)
|
||||||
try {
|
try {
|
||||||
$swg_result = (Get-WmiObject -ClassName Win32_ComputerSystem).JoinDomainOrWorkgroup($workgroup_name)
|
$swg_result = Get-CimInstance Win32_ComputerSystem | Invoke-CimMethod -MethodName JoinDomainOrWorkgroup -Arguments @{Name="$workgroup_name"}
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json -obj $result -message "failed to call Win32_ComputerSystem.JoinDomainOrWorkgroup($workgroup_name): $($_.Exception.Message)"
|
Fail-Json -obj $result -message "failed to call Win32_ComputerSystem.JoinDomainOrWorkgroup($workgroup_name): $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($swg_result.ReturnValue -ne 0) {
|
if ($swg_result.ReturnValue -ne 0) {
|
||||||
Fail-Json -obj $result -message "failed to set workgroup through WMI, return value: $($swg_result.ReturnValue)"
|
Fail-Json -obj $result -message "failed to set workgroup through WMI, return value: $($swg_result.ReturnValue)"
|
||||||
|
}
|
||||||
return $swg_result}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Join-Workgroup {
|
Function Join-Workgroup {
|
||||||
|
@ -168,7 +168,7 @@ Function Join-Workgroup {
|
||||||
|
|
||||||
# 2012+ call the Workgroup arg WorkgroupName, but seem to accept
|
# 2012+ call the Workgroup arg WorkgroupName, but seem to accept
|
||||||
try {
|
try {
|
||||||
$rc_result = Remove-Computer -Workgroup $workgroup_name -Credential $domain_cred -Force
|
Remove-Computer -Workgroup $workgroup_name -Credential $domain_cred -Force
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json -obj $result -message "failed to remove computer from domain: $($_.Exception.Message)"
|
Fail-Json -obj $result -message "failed to remove computer from domain: $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,7 @@ Function Join-Workgroup {
|
||||||
|
|
||||||
# we're already on a workgroup- change it.
|
# we're already on a workgroup- change it.
|
||||||
Else {
|
Else {
|
||||||
$swg_result = Set-Workgroup $workgroup_name
|
Set-Workgroup $workgroup_name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,6 +211,8 @@ Else { # workgroup
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$global:log_path = $log_path
|
||||||
|
|
||||||
Try {
|
Try {
|
||||||
|
|
||||||
$hostname_match = If($hostname) { Get-HostnameMatch $hostname } Else { $true }
|
$hostname_match = If($hostname) { Get-HostnameMatch $hostname } Else { $true }
|
||||||
|
@ -247,7 +249,7 @@ Try {
|
||||||
$join_args.domain_ou_path = $domain_ou_path
|
$join_args.domain_ou_path = $domain_ou_path
|
||||||
}
|
}
|
||||||
|
|
||||||
$join_result = Join-Domain @join_args
|
Join-Domain @join_args
|
||||||
|
|
||||||
# this change requires a reboot
|
# this change requires a reboot
|
||||||
$result.reboot_required = $true
|
$result.reboot_required = $true
|
||||||
|
@ -262,7 +264,7 @@ Try {
|
||||||
$rename_args.DomainCredential = $domain_cred
|
$rename_args.DomainCredential = $domain_cred
|
||||||
}
|
}
|
||||||
|
|
||||||
$rename_result = Rename-Computer @rename_args
|
Rename-Computer @rename_args
|
||||||
|
|
||||||
# this change requires a reboot
|
# this change requires a reboot
|
||||||
$result.reboot_required = $true
|
$result.reboot_required = $true
|
||||||
|
@ -285,14 +287,14 @@ Try {
|
||||||
If(-not $_ansible_check_mode) {
|
If(-not $_ansible_check_mode) {
|
||||||
If(-not $workgroup_match) {
|
If(-not $workgroup_match) {
|
||||||
Write-DebugLog ("setting workgroup to {0}" -f $workgroup_name)
|
Write-DebugLog ("setting workgroup to {0}" -f $workgroup_name)
|
||||||
$join_wg_result = Join-Workgroup -workgroup_name $workgroup_name -domain_admin_user $domain_admin_user -domain_admin_password $domain_admin_password
|
Join-Workgroup -workgroup_name $workgroup_name -domain_admin_user $domain_admin_user -domain_admin_password $domain_admin_password
|
||||||
|
|
||||||
# this change requires a reboot
|
# this change requires a reboot
|
||||||
$result.reboot_required = $true
|
$result.reboot_required = $true
|
||||||
}
|
}
|
||||||
If(-not $hostname_match) {
|
If(-not $hostname_match) {
|
||||||
Write-DebugLog ("setting hostname to {0}" -f $hostname)
|
Write-DebugLog ("setting hostname to {0}" -f $hostname)
|
||||||
$rename_result = Rename-Computer -NewName $hostname
|
Rename-Computer -NewName $hostname
|
||||||
|
|
||||||
# this change requires a reboot
|
# this change requires a reboot
|
||||||
$result.reboot_required = $true
|
$result.reboot_required = $true
|
||||||
|
|
|
@ -400,4 +400,3 @@ if ($test_result.InDesiredState -ne $true) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$module.ExitJson()
|
$module.ExitJson()
|
||||||
|
|
||||||
|
|
|
@ -48,11 +48,11 @@ namespace Ansible.Command {
|
||||||
[DllImport("kernel32.dll", EntryPoint = "GetFinalPathNameByHandleW", CharSet = CharSet.Unicode, SetLastError = true)]
|
[DllImport("kernel32.dll", EntryPoint = "GetFinalPathNameByHandleW", CharSet = CharSet.Unicode, SetLastError = true)]
|
||||||
public static extern int GetFinalPathNameByHandle(IntPtr handle, [In, Out] StringBuilder path, int bufLen, int flags);
|
public static extern int GetFinalPathNameByHandle(IntPtr handle, [In, Out] StringBuilder path, int bufLen, int flags);
|
||||||
|
|
||||||
[DllImport("kernel32.dll", EntryPoint = "CreateFileW", CharSet = CharSet.Unicode, SetLastError = true)]
|
[DllImport("kernel32.dll", EntryPoint = "CreateFileW", CharSet = CharSet.Unicode, SetLastError = true)]
|
||||||
public static extern SafeFileHandle CreateFile(string lpFileName, int dwDesiredAccess,
|
public static extern SafeFileHandle CreateFile(string lpFileName, int dwDesiredAccess,
|
||||||
int dwShareMode, IntPtr SecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, IntPtr hTemplateFile);
|
int dwShareMode, IntPtr SecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, IntPtr hTemplateFile);
|
||||||
|
|
||||||
public static string GetSymbolicLinkTarget(System.IO.DirectoryInfo symlink) {
|
public static string GetSymbolicLinkTarget(System.IO.DirectoryInfo symlink) {
|
||||||
SafeFileHandle directoryHandle = CreateFile(symlink.FullName, 0, 2, System.IntPtr.Zero, CREATION_DISPOSITION_OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, System.IntPtr.Zero);
|
SafeFileHandle directoryHandle = CreateFile(symlink.FullName, 0, 2, System.IntPtr.Zero, CREATION_DISPOSITION_OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, System.IntPtr.Zero);
|
||||||
if(directoryHandle.IsInvalid)
|
if(directoryHandle.IsInvalid)
|
||||||
throw new Win32Exception(Marshal.GetLastWin32Error());
|
throw new Win32Exception(Marshal.GetLastWin32Error());
|
||||||
|
@ -63,9 +63,9 @@ namespace Ansible.Command {
|
||||||
if (size<0)
|
if (size<0)
|
||||||
throw new Win32Exception(Marshal.GetLastWin32Error()); // The remarks section of GetFinalPathNameByHandle mentions the return being prefixed with "\\?\" // More information about "\\?\" here -> http://msdn.microsoft.com/en-us/library/aa365247(v=VS.85).aspx
|
throw new Win32Exception(Marshal.GetLastWin32Error()); // The remarks section of GetFinalPathNameByHandle mentions the return being prefixed with "\\?\" // More information about "\\?\" here -> http://msdn.microsoft.com/en-us/library/aa365247(v=VS.85).aspx
|
||||||
if (path[0] == '\\' && path[1] == '\\' && path[2] == '?' && path[3] == '\\')
|
if (path[0] == '\\' && path[1] == '\\' && path[2] == '?' && path[3] == '\\')
|
||||||
return path.ToString().Substring(4);
|
return path.ToString().Substring(4);
|
||||||
else
|
else
|
||||||
return path.ToString();
|
return path.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ Function Assert-Size($info) {
|
||||||
$size_pattern = '^(-?\d+)(b|k|m|g|t)?$'
|
$size_pattern = '^(-?\d+)(b|k|m|g|t)?$'
|
||||||
$match = $size -match $size_pattern
|
$match = $size -match $size_pattern
|
||||||
if ($match) {
|
if ($match) {
|
||||||
[int]$specified_size = $matches[1]
|
[int]$specified_size = $matches[1]
|
||||||
if ($null -eq $matches[2]) {
|
if ($null -eq $matches[2]) {
|
||||||
$chosen_byte = 'b'
|
$chosen_byte = 'b'
|
||||||
} else {
|
} else {
|
||||||
|
@ -254,20 +254,19 @@ Function Get-FileStat($file) {
|
||||||
} elseif ($file.PSIsContainer) {
|
} elseif ($file.PSIsContainer) {
|
||||||
$isdir = $true
|
$isdir = $true
|
||||||
|
|
||||||
$share_info = Get-WmiObject -Class Win32_Share -Filter "Path='$($file.Fullname -replace '\\', '\\')'"
|
$share_info = Get-CIMInstance -Class Win32_Share -Filter "Path='$($file.Fullname -replace '\\', '\\')'"
|
||||||
if ($null -ne $share_info) {
|
if ($null -ne $share_info) {
|
||||||
$isshared = $true
|
$isshared = $true
|
||||||
$file_stat.sharename = $share_info.Name
|
$file_stat.sharename = $share_info.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
# only get the size of a directory if there are files (not directories) inside the folder
|
# only get the size of a directory if there are files (not directories) inside the folder
|
||||||
# Get-ChildItem -LiteralPath does not work properly on older OS', use .NET instead
|
# Get-ChildItem -LiteralPath does not work properly on older OS', use .NET instead
|
||||||
$dir_files = @()
|
$dir_files = @()
|
||||||
try {
|
try {
|
||||||
$dir_files = $file.EnumerateFiles("*", [System.IO.SearchOption]::AllDirectories)
|
$dir_files = $file.EnumerateFiles("*", [System.IO.SearchOption]::AllDirectories)
|
||||||
} catch [System.IO.DirectoryNotFoundException] { # Broken ReparsePoint/Symlink, cannot enumerate
|
} catch [System.IO.DirectoryNotFoundException] { # Broken ReparsePoint/Symlink, cannot enumerate
|
||||||
} catch [System.UnauthorizedAccessException] {} # No ListDirectory permissions, Get-ChildItem ignored this
|
} catch [System.UnauthorizedAccessException] {} # No ListDirectory permissions, Get-ChildItem ignored this
|
||||||
|
|
||||||
$size = 0
|
$size = 0
|
||||||
foreach ($dir_file in $dir_files) {
|
foreach ($dir_file in $dir_files) {
|
||||||
$size += $dir_file.Length
|
$size += $dir_file.Length
|
||||||
|
@ -304,7 +303,6 @@ Function Get-FilesInFolder($path) {
|
||||||
$dir_files = $dir.EnumerateFileSystemInfos("*", [System.IO.SearchOption]::TopDirectoryOnly)
|
$dir_files = $dir.EnumerateFileSystemInfos("*", [System.IO.SearchOption]::TopDirectoryOnly)
|
||||||
} catch [System.IO.DirectoryNotFoundException] { # Broken ReparsePoint/Symlink, cannot enumerate
|
} catch [System.IO.DirectoryNotFoundException] { # Broken ReparsePoint/Symlink, cannot enumerate
|
||||||
} catch [System.UnauthorizedAccessException] {} # No ListDirectory permissions, Get-ChildItem ignored this
|
} catch [System.UnauthorizedAccessException] {} # No ListDirectory permissions, Get-ChildItem ignored this
|
||||||
|
|
||||||
foreach ($item in $dir_files) {
|
foreach ($item in $dir_files) {
|
||||||
if ($item -is [System.IO.DirectoryInfo] -and $recurse) {
|
if ($item -is [System.IO.DirectoryInfo] -and $recurse) {
|
||||||
if (($item.Attributes -like '*ReparsePoint*' -and $follow) -or ($item.Attributes -notlike '*ReparsePoint*')) {
|
if (($item.Attributes -like '*ReparsePoint*' -and $follow) -or ($item.Attributes -notlike '*ReparsePoint*')) {
|
||||||
|
@ -350,7 +348,7 @@ foreach ($path in $paths_to_check) {
|
||||||
$result.examined = $new_examined
|
$result.examined = $new_examined
|
||||||
|
|
||||||
if ($info -ne $false) {
|
if ($info -ne $false) {
|
||||||
$files = $result.Files
|
$files = $result.Files
|
||||||
$files += $info
|
$files += $info
|
||||||
|
|
||||||
$new_matched = $result.matched + 1
|
$new_matched = $result.matched + 1
|
||||||
|
|
|
@ -49,7 +49,7 @@ Function Extract-MSU($msu) {
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
Fail-Json $result "failed to run expand.exe $($expand_args): RC = $LASTEXITCODE"
|
Fail-Json $result "failed to run expand.exe $($expand_args): RC = $LASTEXITCODE"
|
||||||
}
|
}
|
||||||
|
|
||||||
return $output_path
|
return $output_path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ Function Get-HotfixMetadataFromFile($extract_path) {
|
||||||
Fail-Json $result "failed to get metadata xml inside MSU file, cannot get hotfix metadata required for this task"
|
Fail-Json $result "failed to get metadata xml inside MSU file, cannot get hotfix metadata required for this task"
|
||||||
}
|
}
|
||||||
[xml]$xml = Get-Content -Path $metadata_path.FullName
|
[xml]$xml = Get-Content -Path $metadata_path.FullName
|
||||||
|
|
||||||
$cab_source_filename = $xml.unattend.servicing.package.source.GetAttribute("location")
|
$cab_source_filename = $xml.unattend.servicing.package.source.GetAttribute("location")
|
||||||
$cab_source_filename = Split-Path -Path $cab_source_filename -Leaf
|
$cab_source_filename = Split-Path -Path $cab_source_filename -Leaf
|
||||||
$cab_file = Join-Path -Path $extract_path -ChildPath $cab_source_filename
|
$cab_file = Join-Path -Path $extract_path -ChildPath $cab_source_filename
|
||||||
|
|
|
@ -169,7 +169,7 @@ Function Convert-ToPropertyValue($pool, $attribute_key, $attribute_value) {
|
||||||
# Ensure WebAdministration module is loaded
|
# Ensure WebAdministration module is loaded
|
||||||
if ($null -eq (Get-Module -Name "WebAdministration" -ErrorAction SilentlyContinue)) {
|
if ($null -eq (Get-Module -Name "WebAdministration" -ErrorAction SilentlyContinue)) {
|
||||||
Import-Module WebAdministration
|
Import-Module WebAdministration
|
||||||
$web_admin_dll_path = Join-Path $env:SystemRoot system32\inetsrv\Microsoft.Web.Administration.dll
|
$web_admin_dll_path = Join-Path $env:SystemRoot system32\inetsrv\Microsoft.Web.Administration.dll
|
||||||
Add-Type -Path $web_admin_dll_path
|
Add-Type -Path $web_admin_dll_path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -372,6 +372,6 @@ ElseIf (-not $current_bindings -and $state -eq 'present')
|
||||||
$result.binding_info = Create-BindingInfo $web_binding
|
$result.binding_info = Create-BindingInfo $web_binding
|
||||||
} else {
|
} else {
|
||||||
$result.binding_info = $null
|
$result.binding_info = $null
|
||||||
}
|
}
|
||||||
Exit-Json $result
|
Exit-Json $result
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,14 +18,13 @@ $state = Get-AnsibleParam -obj $params -name "state" -type "str" -validateset "a
|
||||||
$bind_port = Get-AnsibleParam -obj $params -name "port" -type "int"
|
$bind_port = Get-AnsibleParam -obj $params -name "port" -type "int"
|
||||||
$bind_ip = Get-AnsibleParam -obj $params -name "ip" -type "str"
|
$bind_ip = Get-AnsibleParam -obj $params -name "ip" -type "str"
|
||||||
$bind_hostname = Get-AnsibleParam -obj $params -name "hostname" -type "str"
|
$bind_hostname = Get-AnsibleParam -obj $params -name "hostname" -type "str"
|
||||||
$bind_ssl = Get-AnsibleParam -obj $params -name "ssl" -type "str"
|
|
||||||
|
|
||||||
# Custom site Parameters from string where properties
|
# Custom site Parameters from string where properties
|
||||||
# are separated by a pipe and property name/values by colon.
|
# are separated by a pipe and property name/values by colon.
|
||||||
# Ex. "foo:1|bar:2"
|
# Ex. "foo:1|bar:2"
|
||||||
$parameters = Get-AnsibleParam -obj $params -name "parameters" -type "str"
|
$parameters = Get-AnsibleParam -obj $params -name "parameters" -type "str"
|
||||||
if($null -ne $parameters) {
|
if($null -ne $parameters) {
|
||||||
$parameters = @($parameters -split '\|' | ForEach {
|
$parameters = @($parameters -split '\|' | ForEach-Object {
|
||||||
return ,($_ -split "\:", 2);
|
return ,($_ -split "\:", 2);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -43,7 +42,7 @@ $result = @{
|
||||||
}
|
}
|
||||||
|
|
||||||
# Site info
|
# Site info
|
||||||
$site = Get-Website | Where { $_.Name -eq $name }
|
$site = Get-Website | Where-Object { $_.Name -eq $name }
|
||||||
|
|
||||||
Try {
|
Try {
|
||||||
# Add site
|
# Add site
|
||||||
|
@ -102,7 +101,7 @@ Try {
|
||||||
$result.changed = $true
|
$result.changed = $true
|
||||||
}
|
}
|
||||||
|
|
||||||
$site = Get-Website | Where { $_.Name -eq $name }
|
$site = Get-Website | Where-Object { $_.Name -eq $name }
|
||||||
If($site) {
|
If($site) {
|
||||||
# Change Physical Path if needed
|
# Change Physical Path if needed
|
||||||
if($physical_path) {
|
if($physical_path) {
|
||||||
|
@ -127,7 +126,7 @@ Try {
|
||||||
|
|
||||||
# Set properties
|
# Set properties
|
||||||
if($parameters) {
|
if($parameters) {
|
||||||
$parameters | foreach {
|
$parameters | ForEach-Object {
|
||||||
$property_value = Get-ItemProperty "IIS:\Sites\$($site.Name)" $_[0]
|
$property_value = Get-ItemProperty "IIS:\Sites\$($site.Name)" $_[0]
|
||||||
|
|
||||||
switch ($property_value.GetType().Name)
|
switch ($property_value.GetType().Name)
|
||||||
|
@ -137,7 +136,7 @@ Try {
|
||||||
}
|
}
|
||||||
|
|
||||||
if((-not $parameter_value) -or ($parameter_value) -ne $_[1]) {
|
if((-not $parameter_value) -or ($parameter_value) -ne $_[1]) {
|
||||||
Set-ItemProperty "IIS:\Sites\$($site.Name)" $_[0] $_[1]
|
Set-ItemProperty -LiteralPath "IIS:\Sites\$($site.Name)" $_[0] $_[1]
|
||||||
$result.changed = $true
|
$result.changed = $true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,7 +162,7 @@ Catch
|
||||||
|
|
||||||
if ($state -ne 'absent')
|
if ($state -ne 'absent')
|
||||||
{
|
{
|
||||||
$site = Get-Website | Where { $_.Name -eq $name }
|
$site = Get-Website | Where-Object { $_.Name -eq $name }
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($site)
|
if ($site)
|
||||||
|
|
|
@ -48,5 +48,5 @@ $result.sent_localtime = $endsend_at.Trim()
|
||||||
if ($result.rc -ne 0 ) {
|
if ($result.rc -ne 0 ) {
|
||||||
Fail-Json -obj $result -message "$output"
|
Fail-Json -obj $result -message "$output"
|
||||||
}
|
}
|
||||||
|
|
||||||
Exit-Json $result
|
Exit-Json $result
|
||||||
|
|
|
@ -150,7 +150,7 @@ Function Test-RegistryProperty($path, $name) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Get-ProgramMetadata($state, $path, $product_id, $credential, $creates_path, $creates_version, $creates_service) {
|
Function Get-ProgramMetadata($state, $path, $product_id, [PSCredential]$credential, $creates_path, $creates_version, $creates_service) {
|
||||||
# will get some metadata about the program we are trying to install or remove
|
# will get some metadata about the program we are trying to install or remove
|
||||||
$metadata = @{
|
$metadata = @{
|
||||||
installed = $false
|
installed = $false
|
||||||
|
@ -327,7 +327,7 @@ if ($state -eq "absent") {
|
||||||
|
|
||||||
if ($program_metadata.msi -eq $true) {
|
if ($program_metadata.msi -eq $true) {
|
||||||
# we are uninstalling an msi
|
# we are uninstalling an msi
|
||||||
if ( -Not $log_path ) {
|
if ( -Not $log_path ) {
|
||||||
$temp_path = [System.IO.Path]::GetTempPath()
|
$temp_path = [System.IO.Path]::GetTempPath()
|
||||||
$log_file = [System.IO.Path]::GetRandomFileName()
|
$log_file = [System.IO.Path]::GetRandomFileName()
|
||||||
$log_path = Join-Path -Path $temp_path -ChildPath $log_file
|
$log_path = Join-Path -Path $temp_path -ChildPath $log_file
|
||||||
|
@ -421,7 +421,7 @@ if ($state -eq "absent") {
|
||||||
|
|
||||||
if ($program_metadata.msi -eq $true) {
|
if ($program_metadata.msi -eq $true) {
|
||||||
# we are installing an msi
|
# we are installing an msi
|
||||||
if ( -Not $log_path ) {
|
if ( -Not $log_path ) {
|
||||||
$temp_path = [System.IO.Path]::GetTempPath()
|
$temp_path = [System.IO.Path]::GetTempPath()
|
||||||
$log_file = [System.IO.Path]::GetRandomFileName()
|
$log_file = [System.IO.Path]::GetRandomFileName()
|
||||||
$log_path = Join-Path -Path $temp_path -ChildPath $log_file
|
$log_path = Join-Path -Path $temp_path -ChildPath $log_file
|
||||||
|
|
|
@ -9,12 +9,12 @@
|
||||||
|
|
||||||
Function Remove-Pagefile($path, $whatif)
|
Function Remove-Pagefile($path, $whatif)
|
||||||
{
|
{
|
||||||
Get-WmiObject Win32_PageFileSetting | WHERE { $_.Name -eq $path } | Remove-WmiObject -WhatIf:$whatif
|
Get-CIMInstance Win32_PageFileSetting | Where-Object { $_.Name -eq $path } | Remove-CIMInstance -WhatIf:$whatif
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Get-Pagefile($path)
|
Function Get-Pagefile($path)
|
||||||
{
|
{
|
||||||
Get-WmiObject Win32_PageFileSetting | WHERE { $_.Name -eq $path }
|
Get-CIMInstance Win32_PageFileSetting | Where-Object { $_.Name -eq $path }
|
||||||
}
|
}
|
||||||
|
|
||||||
########
|
########
|
||||||
|
@ -38,25 +38,24 @@ $result = @{
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($removeAll) {
|
if ($removeAll) {
|
||||||
$currentPageFiles = Get-WmiObject Win32_PageFileSetting
|
$currentPageFiles = Get-CIMInstance Win32_PageFileSetting
|
||||||
if ($null -ne $currentPageFiles) {
|
if ($null -ne $currentPageFiles) {
|
||||||
$currentPageFiles | Remove-WmiObject -WhatIf:$check_mode | Out-Null
|
$currentPageFiles | Remove-CIMInstance -WhatIf:$check_mode > $null
|
||||||
$result.changed = $true
|
$result.changed = $true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -ne $automatic) {
|
if ($null -ne $automatic) {
|
||||||
# change autmoatic managed pagefile
|
# change autmoatic managed pagefile
|
||||||
try {
|
try {
|
||||||
$computerSystem = Get-WmiObject -Class win32_computersystem -EnableAllPrivileges
|
$computerSystem = Get-CIMInstance -Class win32_computersystem
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json $result "Failed to query WMI computer system object $($_.Exception.Message)"
|
Fail-Json $result "Failed to query WMI computer system object $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
if ($computerSystem.AutomaticManagedPagefile -ne $automatic) {
|
if ($computerSystem.AutomaticManagedPagefile -ne $automatic) {
|
||||||
$computerSystem.AutomaticManagedPagefile = $automatic
|
|
||||||
if (-not $check_mode) {
|
if (-not $check_mode) {
|
||||||
try {
|
try {
|
||||||
$computerSystem.Put() | Out-Null
|
$computerSystem | Set-CimInstance -Property @{automaticmanagedpagefile="$automatic"} > $null
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json $result "Failed to set AutomaticManagedPagefile $($_.Exception.Message)"
|
Fail-Json $result "Failed to set AutomaticManagedPagefile $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
|
@ -91,7 +90,7 @@ if ($state -eq "absent") {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Make sure drive is accessible
|
# Make sure drive is accessible
|
||||||
if (($testPath) -and (-not (Test-Path "${drive}:"))) {
|
if (($test_path) -and (-not (Test-Path "${drive}:"))) {
|
||||||
Fail-Json $result "Unable to access '${drive}:' drive"
|
Fail-Json $result "Unable to access '${drive}:' drive"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,15 +99,13 @@ if ($state -eq "absent") {
|
||||||
# Set pagefile
|
# Set pagefile
|
||||||
if ($null -eq $curPagefile) {
|
if ($null -eq $curPagefile) {
|
||||||
try {
|
try {
|
||||||
$pagefile = Set-WmiInstance -Class Win32_PageFileSetting -Arguments @{name = $fullPath; InitialSize = 0; MaximumSize = 0} -WhatIf:$check_mode
|
$pagefile = New-CIMInstance -Class Win32_PageFileSetting -Arguments @{name = $fullPath;} -WhatIf:$check_mode
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json $result "Failed to create pagefile $($_.Exception.Message)"
|
Fail-Json $result "Failed to create pagefile $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
if (-not ($systemManaged -or $check_mode)) {
|
if (-not ($systemManaged -or $check_mode)) {
|
||||||
$pagefile.InitialSize = $initialSize
|
|
||||||
$pagefile.MaximumSize = $maximumSize
|
|
||||||
try {
|
try {
|
||||||
$pagefile.Put() | out-null
|
$pagefile | Set-CimInstance -Property @{ InitialSize = $initialSize; MaximumSize = $maximumSize}
|
||||||
} catch {
|
} catch {
|
||||||
$originalExceptionMessage = $($_.Exception.Message)
|
$originalExceptionMessage = $($_.Exception.Message)
|
||||||
# Try workaround before failing
|
# Try workaround before failing
|
||||||
|
@ -124,7 +121,7 @@ if ($state -eq "absent") {
|
||||||
}
|
}
|
||||||
$pagingFilesValues += "$fullPath $initialSize $maximumSize"
|
$pagingFilesValues += "$fullPath $initialSize $maximumSize"
|
||||||
try {
|
try {
|
||||||
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" $pagingFilesValues
|
Set-ItemProperty -LiteralPath "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" $pagingFilesValues
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json $result "Failed to set pagefile settings to the registry for workaround $($_.Exception.Message) Original exception: $originalExceptionMessage"
|
Fail-Json $result "Failed to set pagefile settings to the registry for workaround $($_.Exception.Message) Original exception: $originalExceptionMessage"
|
||||||
}
|
}
|
||||||
|
@ -134,9 +131,9 @@ if ($state -eq "absent") {
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
$CurPageFileSystemManaged = (Get-CimInstance -ClassName win32_Pagefile -Property 'System' -Filter "name='$($fullPath.Replace('\','\\'))'").System
|
$CurPageFileSystemManaged = (Get-CimInstance -ClassName win32_Pagefile -Property 'System' -Filter "name='$($fullPath.Replace('\','\\'))'").System
|
||||||
if ((-not $check_mode) -and
|
if ((-not $check_mode) -and
|
||||||
-not ($systemManaged -or $CurPageFileSystemManaged) -and
|
-not ($systemManaged -or $CurPageFileSystemManaged) -and
|
||||||
( ($curPagefile.InitialSize -ne $initialSize) -or
|
( ($curPagefile.InitialSize -ne $initialSize) -or
|
||||||
($curPagefile.maximumSize -ne $maximumSize)))
|
($curPagefile.maximumSize -ne $maximumSize)))
|
||||||
{
|
{
|
||||||
$curPagefile.InitialSize = $initialSize
|
$curPagefile.InitialSize = $initialSize
|
||||||
|
@ -158,7 +155,7 @@ if ($state -eq "absent") {
|
||||||
}
|
}
|
||||||
$pagingFilesValues += "$fullPath $initialSize $maximumSize"
|
$pagingFilesValues += "$fullPath $initialSize $maximumSize"
|
||||||
try {
|
try {
|
||||||
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" $pagingFilesValues
|
Set-ItemProperty -LiteralPath "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name "PagingFiles" -Value $pagingFilesValues
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json $result "Failed to set pagefile settings to the registry for workaround $($_.Exception.Message) Original exception: $originalExceptionMessage"
|
Fail-Json $result "Failed to set pagefile settings to the registry for workaround $($_.Exception.Message) Original exception: $originalExceptionMessage"
|
||||||
}
|
}
|
||||||
|
@ -171,7 +168,7 @@ if ($state -eq "absent") {
|
||||||
|
|
||||||
if ($null -eq $drive) {
|
if ($null -eq $drive) {
|
||||||
try {
|
try {
|
||||||
$pagefiles = Get-WmiObject Win32_PageFileSetting
|
$pagefiles = Get-CIMInstance Win32_PageFileSetting
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json $result "Failed to query all pagefiles $($_.Exception.Message)"
|
Fail-Json $result "Failed to query all pagefiles $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
|
@ -192,12 +189,12 @@ if ($state -eq "absent") {
|
||||||
caption = $currentPagefile.Caption
|
caption = $currentPagefile.Caption
|
||||||
description = $currentPagefile.Description
|
description = $currentPagefile.Description
|
||||||
}
|
}
|
||||||
$result.pagefiles += $currentPagefileObject
|
$result.pagefiles += ,$currentPagefileObject
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get automatic managed pagefile state
|
# Get automatic managed pagefile state
|
||||||
try {
|
try {
|
||||||
$result.automatic_managed_pagefiles = (Get-WmiObject -Class win32_computersystem).AutomaticManagedPagefile
|
$result.automatic_managed_pagefiles = (Get-CIMInstance -Class win32_computersystem).AutomaticManagedPagefile
|
||||||
} catch {
|
} catch {
|
||||||
Fail-Json $result "Failed to query automatic managed pagefile state $($_.Exception.Message)"
|
Fail-Json $result "Failed to query automatic managed pagefile state $($_.Exception.Message)"
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,8 +78,8 @@ $module.Result.ansible_facts = @{
|
||||||
ansible_os_product_id = (Get-CimInstance Win32_OperatingSystem).SerialNumber
|
ansible_os_product_id = (Get-CimInstance Win32_OperatingSystem).SerialNumber
|
||||||
ansible_os_product_key = $product_key
|
ansible_os_product_key = $product_key
|
||||||
ansible_os_license_edition = $winlicense_edition
|
ansible_os_license_edition = $winlicense_edition
|
||||||
ansible_os_license_channel = $winlicense_channel
|
ansible_os_license_channel = $winlicense_channel
|
||||||
ansible_os_license_status = $winlicense_status
|
ansible_os_license_status = $winlicense_status
|
||||||
}
|
}
|
||||||
|
|
||||||
$module.ExitJson()
|
$module.ExitJson()
|
||||||
|
|
|
@ -9,7 +9,7 @@ function Get-EnabledPlugins($rabbitmq_plugins_cmd)
|
||||||
{
|
{
|
||||||
$list_plugins_cmd = "$rabbitmq_plugins_cmd list -E -m"
|
$list_plugins_cmd = "$rabbitmq_plugins_cmd list -E -m"
|
||||||
try {
|
try {
|
||||||
$enabled_plugins = @(Invoke-Expression "& $list_plugins_cmd" | Where { $_ })
|
$enabled_plugins = @(Invoke-Expression "& $list_plugins_cmd" | Where-Object { $_ })
|
||||||
return ,$enabled_plugins
|
return ,$enabled_plugins
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
|
@ -115,7 +115,7 @@ if ($rabbitmq_bin_path) {
|
||||||
$enabled_plugins = Get-EnabledPlugins -rabbitmq_plugins_cmd $rabbitmq_plugins_cmd
|
$enabled_plugins = Get-EnabledPlugins -rabbitmq_plugins_cmd $rabbitmq_plugins_cmd
|
||||||
|
|
||||||
if ($state -eq "enabled") {
|
if ($state -eq "enabled") {
|
||||||
$plugins_to_enable = $plugins | ?{-not ($enabled_plugins -contains $_)}
|
$plugins_to_enable = $plugins | Where-Object {-not ($enabled_plugins -contains $_)}
|
||||||
foreach ($plugin in $plugins_to_enable) {
|
foreach ($plugin in $plugins_to_enable) {
|
||||||
if (-not $check_mode) {
|
if (-not $check_mode) {
|
||||||
Enable-Plugin -rabbitmq_plugins_cmd $rabbitmq_plugins_cmd -plugin_name $plugin
|
Enable-Plugin -rabbitmq_plugins_cmd $rabbitmq_plugins_cmd -plugin_name $plugin
|
||||||
|
@ -128,7 +128,7 @@ if ($state -eq "enabled") {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-not $new_only) {
|
if (-not $new_only) {
|
||||||
$plugins_to_disable = $enabled_plugins | ?{-not ($plugins -contains $_)}
|
$plugins_to_disable = $enabled_plugins | Where-Object {-not ($plugins -contains $_)}
|
||||||
foreach ($plugin in $plugins_to_disable) {
|
foreach ($plugin in $plugins_to_disable) {
|
||||||
if (-not $check_mode) {
|
if (-not $check_mode) {
|
||||||
Disable-Plugin -rabbitmq_plugins_cmd $rabbitmq_plugins_cmd -plugin_name $plugin
|
Disable-Plugin -rabbitmq_plugins_cmd $rabbitmq_plugins_cmd -plugin_name $plugin
|
||||||
|
@ -141,7 +141,7 @@ if ($state -eq "enabled") {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$plugins_to_disable = $enabled_plugins | ?{$plugins -contains $_}
|
$plugins_to_disable = $enabled_plugins | Where-Object {$plugins -contains $_}
|
||||||
foreach ($plugin in $plugins_to_disable) {
|
foreach ($plugin in $plugins_to_disable) {
|
||||||
if (-not $check_mode) {
|
if (-not $check_mode) {
|
||||||
Disable-Plugin -rabbitmq_plugins_cmd $rabbitmq_plugins_cmd -plugin_name $plugin
|
Disable-Plugin -rabbitmq_plugins_cmd $rabbitmq_plugins_cmd -plugin_name $plugin
|
||||||
|
|
|
@ -59,7 +59,7 @@ function Get-CAP([string] $name) {
|
||||||
|
|
||||||
# Fetch CAP user and computer groups in Down-Level Logon format
|
# Fetch CAP user and computer groups in Down-Level Logon format
|
||||||
$cap.UserGroups = @(
|
$cap.UserGroups = @(
|
||||||
Get-ChildItem -Path "$cap_path\UserGroups" |
|
Get-ChildItem -Path "$cap_path\UserGroups" |
|
||||||
Select-Object -ExpandProperty Name |
|
Select-Object -ExpandProperty Name |
|
||||||
ForEach-Object { Convert-FromSID -sid (Convert-ToSID -account_name $_) }
|
ForEach-Object { Convert-FromSID -sid (Convert-ToSID -account_name $_) }
|
||||||
)
|
)
|
||||||
|
|
|
@ -54,7 +54,7 @@ function Get-RAP([string] $name) {
|
||||||
|
|
||||||
# Fetch RAP user groups in Down-Level Logon format
|
# Fetch RAP user groups in Down-Level Logon format
|
||||||
$rap.UserGroups = @(
|
$rap.UserGroups = @(
|
||||||
Get-ChildItem -Path "$rap_path\UserGroups" |
|
Get-ChildItem -Path "$rap_path\UserGroups" |
|
||||||
Select-Object -ExpandProperty Name |
|
Select-Object -ExpandProperty Name |
|
||||||
ForEach-Object { Convert-FromSID -sid (Convert-ToSID -account_name $_) }
|
ForEach-Object { Convert-FromSID -sid (Convert-ToSID -account_name $_) }
|
||||||
)
|
)
|
||||||
|
|
|
@ -14,7 +14,7 @@ Function Convert-RegistryPath {
|
||||||
)
|
)
|
||||||
|
|
||||||
$output = $Path -replace "HKLM:", "HKLM"
|
$output = $Path -replace "HKLM:", "HKLM"
|
||||||
$output = $output -replace "HKCU:", "HKCU"
|
$output = $output -replace "HKCU:", "HKCU"
|
||||||
|
|
||||||
Return $output
|
Return $output
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ If ( $do_comparison -eq $True ) {
|
||||||
$guid = [guid]::NewGuid()
|
$guid = [guid]::NewGuid()
|
||||||
$exported_path = $env:TEMP + "\" + $guid.ToString() + 'ansible_win_regmerge.reg'
|
$exported_path = $env:TEMP + "\" + $guid.ToString() + 'ansible_win_regmerge.reg'
|
||||||
|
|
||||||
$expanded_compare_key = Convert-RegistryPath ($compare_to_key)
|
$expanded_compare_key = Convert-RegistryPath ($compare_to_key)
|
||||||
|
|
||||||
# export from the reg key location to a file
|
# export from the reg key location to a file
|
||||||
$reg_args = Argv-ToString -Arguments @("reg.exe", "EXPORT", $expanded_compare_key, $exported_path)
|
$reg_args = Argv-ToString -Arguments @("reg.exe", "EXPORT", $expanded_compare_key, $exported_path)
|
||||||
|
|
|
@ -39,13 +39,13 @@ Function Add-Route {
|
||||||
if (!($Route)){
|
if (!($Route)){
|
||||||
try {
|
try {
|
||||||
# Find Interface Index
|
# Find Interface Index
|
||||||
$InterfaceIndex = Find-NetRoute -RemoteIPAddress $Gateway | Select -First 1 -ExpandProperty InterfaceIndex
|
$InterfaceIndex = Find-NetRoute -RemoteIPAddress $Gateway | Select-Object -First 1 -ExpandProperty InterfaceIndex
|
||||||
|
|
||||||
# Add network route
|
# Add network route
|
||||||
New-NetRoute -DestinationPrefix $Destination -NextHop $Gateway -InterfaceIndex $InterfaceIndex -RouteMetric $Metric -ErrorAction Stop -WhatIf:$CheckMode|out-null
|
New-NetRoute -DestinationPrefix $Destination -NextHop $Gateway -InterfaceIndex $InterfaceIndex -RouteMetric $Metric -ErrorAction Stop -WhatIf:$CheckMode|out-null
|
||||||
$result.changed = $true
|
$result.changed = $true
|
||||||
$result.output = "Route added"
|
$result.output = "Route added"
|
||||||
|
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
$ErrorMessage = $_.Exception.Message
|
$ErrorMessage = $_.Exception.Message
|
||||||
|
@ -55,7 +55,7 @@ Function Add-Route {
|
||||||
else {
|
else {
|
||||||
$result.output = "Static route already exists"
|
$result.output = "Static route already exists"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Remove-Route {
|
Function Remove-Route {
|
||||||
|
@ -69,7 +69,7 @@ Function Remove-Route {
|
||||||
if ($Route){
|
if ($Route){
|
||||||
try {
|
try {
|
||||||
|
|
||||||
Remove-NetRoute -DestinationPrefix $Destination -Confirm:$false -ErrorAction Stop -WhatIf:$CheckMode
|
Remove-NetRoute -DestinationPrefix $Destination -Confirm:$false -ErrorAction Stop -WhatIf:$CheckMode
|
||||||
$result.changed = $true
|
$result.changed = $true
|
||||||
$result.output = "Route removed"
|
$result.output = "Route removed"
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ Function Remove-Route {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Set gateway if null
|
# Set gateway if null
|
||||||
if(!($gateway)){
|
if(!($gateway)){
|
||||||
$gateway = "0.0.0.0"
|
$gateway = "0.0.0.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ $words = $null
|
||||||
if ($msg_file) {
|
if ($msg_file) {
|
||||||
if (-not (Test-Path -Path $msg_file)) {
|
if (-not (Test-Path -Path $msg_file)) {
|
||||||
$module.FailJson("Message file $msg_file could not be found or opened. Ensure you have specified the full path to the file, and the ansible windows user has permission to read the file.")
|
$module.FailJson("Message file $msg_file could not be found or opened. Ensure you have specified the full path to the file, and the ansible windows user has permission to read the file.")
|
||||||
}
|
}
|
||||||
$words = Get-Content $msg_file | Out-String
|
$words = Get-Content $msg_file | Out-String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ if ($msg) {
|
||||||
if ($start_sound_path) {
|
if ($start_sound_path) {
|
||||||
if (-not (Test-Path -Path $start_sound_path)) {
|
if (-not (Test-Path -Path $start_sound_path)) {
|
||||||
$module.FailJson("Start sound file $start_sound_path could not be found or opened. Ensure you have specified the full path to the file, and the ansible windows user has permission to read the file.")
|
$module.FailJson("Start sound file $start_sound_path could not be found or opened. Ensure you have specified the full path to the file, and the ansible windows user has permission to read the file.")
|
||||||
}
|
}
|
||||||
if (-not $module.CheckMode) {
|
if (-not $module.CheckMode) {
|
||||||
(new-object Media.SoundPlayer $start_sound_path).playSync()
|
(new-object Media.SoundPlayer $start_sound_path).playSync()
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ if ($words) {
|
||||||
if ($end_sound_path) {
|
if ($end_sound_path) {
|
||||||
if (-not (Test-Path -Path $end_sound_path)) {
|
if (-not (Test-Path -Path $end_sound_path)) {
|
||||||
$module.FailJson("End sound file $start_sound_path could not be found or opened. Ensure you have specified the full path to the file, and the ansible windows user has permission to read the file.")
|
$module.FailJson("End sound file $start_sound_path could not be found or opened. Ensure you have specified the full path to the file, and the ansible windows user has permission to read the file.")
|
||||||
}
|
}
|
||||||
if (-not $module.CheckMode) {
|
if (-not $module.CheckMode) {
|
||||||
(new-object Media.SoundPlayer $end_sound_path).playSync()
|
(new-object Media.SoundPlayer $end_sound_path).playSync()
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ Function Get-PropertyValue($task_property, $com, $property) {
|
||||||
return $null
|
return $null
|
||||||
} elseif ($raw_value.GetType().Name -eq "__ComObject") {
|
} elseif ($raw_value.GetType().Name -eq "__ComObject") {
|
||||||
$com_values = @{}
|
$com_values = @{}
|
||||||
$properties = Get-Member -InputObject $raw_value -MemberType Property | % {
|
Get-Member -InputObject $raw_value -MemberType Property | ForEach-Object {
|
||||||
$com_value = Get-PropertyValue -task_property $property -com $raw_value -property $_.Name
|
$com_value = Get-PropertyValue -task_property $property -com $raw_value -property $_.Name
|
||||||
$com_values.$($_.Name) = $com_value
|
$com_values.$($_.Name) = $com_value
|
||||||
}
|
}
|
||||||
|
@ -297,7 +297,7 @@ if ($null -ne $name) {
|
||||||
$property_name = $property -replace "_"
|
$property_name = $property -replace "_"
|
||||||
$result.$property = @{}
|
$result.$property = @{}
|
||||||
$values = $task_definition.$property_name
|
$values = $task_definition.$property_name
|
||||||
Get-Member -InputObject $values -MemberType Property | % {
|
Get-Member -InputObject $values -MemberType Property | ForEach-Object {
|
||||||
if ($_.Name -notin $ignored_properties) {
|
if ($_.Name -notin $ignored_properties) {
|
||||||
$result.$property.$($_.Name) = (Get-PropertyValue -task_property $property -com $values -property $_.Name)
|
$result.$property.$($_.Name) = (Get-PropertyValue -task_property $property -com $values -property $_.Name)
|
||||||
}
|
}
|
||||||
|
@ -312,14 +312,14 @@ if ($null -ne $name) {
|
||||||
$item = $collection.Item($i)
|
$item = $collection.Item($i)
|
||||||
$item_info = @{}
|
$item_info = @{}
|
||||||
|
|
||||||
Get-Member -InputObject $item -MemberType Property | % {
|
Get-Member -InputObject $item -MemberType Property | ForEach-Object {
|
||||||
if ($_.Name -notin $ignored_properties) {
|
if ($_.Name -notin $ignored_properties) {
|
||||||
$item_info.$($_.Name) = (Get-PropertyValue -task_property $property -com $item -property $_.Name)
|
$item_info.$($_.Name) = (Get-PropertyValue -task_property $property -com $item -property $_.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$result.$property += $item_info
|
$result.$property += $item_info
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result.task_exists = $false
|
$result.task_exists = $false
|
||||||
}
|
}
|
||||||
|
@ -328,4 +328,3 @@ if ($null -ne $name) {
|
||||||
$result = Convert-DictToSnakeCase -dict $result
|
$result = Convert-DictToSnakeCase -dict $result
|
||||||
|
|
||||||
Exit-Json -obj $result
|
Exit-Json -obj $result
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@ if ($diff_mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Run-SecEdit($arguments) {
|
Function Run-SecEdit($arguments) {
|
||||||
$rc = $null
|
|
||||||
$stdout = $null
|
$stdout = $null
|
||||||
$stderr = $null
|
$stderr = $null
|
||||||
$log_path = [IO.Path]::GetTempFileName()
|
$log_path = [IO.Path]::GetTempFileName()
|
||||||
|
@ -165,7 +164,7 @@ if ($secedit_ini.$section.ContainsKey($key)) {
|
||||||
if ($diff_mode) {
|
if ($diff_mode) {
|
||||||
$result.diff.prepared = @"
|
$result.diff.prepared = @"
|
||||||
[$section]
|
[$section]
|
||||||
+$key = $value
|
+$key = $value
|
||||||
"@
|
"@
|
||||||
}
|
}
|
||||||
$secedit_ini.$section.$key = $value
|
$secedit_ini.$section.$key = $value
|
||||||
|
|
|
@ -23,7 +23,7 @@ Function Cleanse-Stderr($raw_stderr) {
|
||||||
$matches["prenoise1"],
|
$matches["prenoise1"],
|
||||||
$matches["prenoise2"],
|
$matches["prenoise2"],
|
||||||
# filter out just the Error-tagged strings for now, and zap embedded CRLF chars
|
# filter out just the Error-tagged strings for now, and zap embedded CRLF chars
|
||||||
($clixml.Objs.ChildNodes | ? { $_.Name -eq 'S' } | ? { $_.S -eq 'Error' } | % { $_.'#text'.Replace('_x000D__x000A_','') } | Out-String),
|
($clixml.Objs.ChildNodes | Where-Object { $_.Name -eq 'S' } | Where-Object { $_.S -eq 'Error' } | ForEach-Object { $_.'#text'.Replace('_x000D__x000A_','') } | Out-String),
|
||||||
$matches["postnoise"]) | Out-String
|
$matches["postnoise"]) | Out-String
|
||||||
|
|
||||||
return $merged_stderr.Trim()
|
return $merged_stderr.Trim()
|
||||||
|
@ -119,7 +119,7 @@ try {
|
||||||
|
|
||||||
# TODO: decode CLIXML stderr output (and other streams?)
|
# TODO: decode CLIXML stderr output (and other streams?)
|
||||||
$result.stdout = $command_result.stdout
|
$result.stdout = $command_result.stdout
|
||||||
$result.stderr = Cleanse-Stderr $command_result.stderr
|
$result.stderr = Cleanse-Stderr $command_result.stderr
|
||||||
$result.rc = $command_result.rc
|
$result.rc = $command_result.rc
|
||||||
|
|
||||||
$end_datetime = [DateTime]::UtcNow
|
$end_datetime = [DateTime]::UtcNow
|
||||||
|
|
|
@ -77,7 +77,7 @@ $module.Result.stat = @{ exists=$false }
|
||||||
|
|
||||||
Load-LinkUtils
|
Load-LinkUtils
|
||||||
$info, $link_info = Get-FileInfo -Path $path -Follow:$follow
|
$info, $link_info = Get-FileInfo -Path $path -Follow:$follow
|
||||||
If ($null -ne $info) {
|
If ($null -ne $info) {
|
||||||
$epoch_date = Get-Date -Date "01/01/1970"
|
$epoch_date = Get-Date -Date "01/01/1970"
|
||||||
$attributes = @()
|
$attributes = @()
|
||||||
foreach ($attribute in ($info.Attributes -split ',')) {
|
foreach ($attribute in ($info.Attributes -split ',')) {
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
Function New-TempFile {
|
Function New-TempFile {
|
||||||
Param ([string]$path, [string]$prefix, [string]$suffix, [string]$type, [bool]$checkmode)
|
Param ([string]$path, [string]$prefix, [string]$suffix, [string]$type, [bool]$checkmode)
|
||||||
$temppath = $null
|
$temppath = $null
|
||||||
|
$curerror = $null
|
||||||
$attempt = 0
|
$attempt = 0
|
||||||
|
|
||||||
# Since we don't know if the file already exists, we try 5 times with a random name
|
# Since we don't know if the file already exists, we try 5 times with a random name
|
||||||
|
@ -26,13 +27,13 @@ Function New-TempFile {
|
||||||
}
|
}
|
||||||
} Catch {
|
} Catch {
|
||||||
$temppath = $null
|
$temppath = $null
|
||||||
$error = $_
|
$curerror = $_
|
||||||
}
|
}
|
||||||
} until (($null -ne $temppath) -or ($attempt -ge 5))
|
} until (($null -ne $temppath) -or ($attempt -ge 5))
|
||||||
|
|
||||||
# If it fails 5 times, something is wrong and we have to report the details
|
# If it fails 5 times, something is wrong and we have to report the details
|
||||||
if ($null -eq $temppath) {
|
if ($null -eq $temppath) {
|
||||||
$module.FailJson("No random temporary file worked in $attempt attempts. Error: $($error.Exception.Message)", $error)
|
$module.FailJson("No random temporary file worked in $attempt attempts. Error: $($curerror.Exception.Message)", $curerror)
|
||||||
}
|
}
|
||||||
|
|
||||||
return $temppath.ToString()
|
return $temppath.ToString()
|
||||||
|
|
|
@ -12,7 +12,7 @@ $ErrorActionPreference = "Stop"
|
||||||
$osversion = [Environment]::OSVersion
|
$osversion = [Environment]::OSVersion
|
||||||
$lowest_version = 10
|
$lowest_version = 10
|
||||||
if ($osversion.Version.Major -lt $lowest_version ) {
|
if ($osversion.Version.Major -lt $lowest_version ) {
|
||||||
Fail-Json -obj $result -message "Sorry, this version of windows, $osversion, does not support Toast notifications. Toast notifications are available from version $lowest_version"
|
Fail-Json -obj $result -message "Sorry, this version of windows, $osversion, does not support Toast notifications. Toast notifications are available from version $lowest_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
$stopwatch = [system.diagnostics.stopwatch]::startNew()
|
$stopwatch = [system.diagnostics.stopwatch]::startNew()
|
||||||
|
@ -43,27 +43,27 @@ $result = @{
|
||||||
# If no logged in users, there is no notifications service,
|
# If no logged in users, there is no notifications service,
|
||||||
# and no-one to read the message, so exit but do not fail
|
# and no-one to read the message, so exit but do not fail
|
||||||
# if there are no logged in users to notify.
|
# if there are no logged in users to notify.
|
||||||
|
|
||||||
if ((Get-Process -Name explorer -ErrorAction SilentlyContinue).Count -gt 0){
|
if ((Get-Process -Name explorer -ErrorAction SilentlyContinue).Count -gt 0){
|
||||||
|
|
||||||
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
|
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
|
||||||
$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText01)
|
$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText01)
|
||||||
|
|
||||||
#Convert to .NET type for XML manipulation
|
#Convert to .NET type for XML manipulation
|
||||||
$toastXml = [xml] $template.GetXml()
|
$toastXml = [xml] $template.GetXml()
|
||||||
$toastXml.GetElementsByTagName("text").AppendChild($toastXml.CreateTextNode($title)) > $null
|
$toastXml.GetElementsByTagName("text").AppendChild($toastXml.CreateTextNode($title)) > $null
|
||||||
# TODO add subtitle
|
# TODO add subtitle
|
||||||
|
|
||||||
#Convert back to WinRT type
|
#Convert back to WinRT type
|
||||||
$xml = New-Object Windows.Data.Xml.Dom.XmlDocument
|
$xml = New-Object Windows.Data.Xml.Dom.XmlDocument
|
||||||
$xml.LoadXml($toastXml.OuterXml)
|
$xml.LoadXml($toastXml.OuterXml)
|
||||||
|
|
||||||
$toast = [Windows.UI.Notifications.ToastNotification]::new($xml)
|
$toast = [Windows.UI.Notifications.ToastNotification]::new($xml)
|
||||||
$toast.Tag = $tag
|
$toast.Tag = $tag
|
||||||
$toast.Group = $group
|
$toast.Group = $group
|
||||||
$toast.ExpirationTime = $expire_at
|
$toast.ExpirationTime = $expire_at
|
||||||
$toast.SuppressPopup = -not $popup
|
$toast.SuppressPopup = -not $popup
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($msg)
|
$notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($msg)
|
||||||
if (-not $check_mode) {
|
if (-not $check_mode) {
|
||||||
|
@ -86,5 +86,5 @@ $stopwatch.Stop()
|
||||||
|
|
||||||
$result.time_taken = $stopwatch.Elapsed.TotalSeconds
|
$result.time_taken = $stopwatch.Elapsed.TotalSeconds
|
||||||
$result.sent_localtime = $endsend_at.Trim()
|
$result.sent_localtime = $endsend_at.Trim()
|
||||||
|
|
||||||
Exit-Json -obj $result
|
Exit-Json -obj $result
|
||||||
|
|
|
@ -142,7 +142,7 @@ If ($ext -eq ".zip" -And $recurse -eq $false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
If ($recurse) {
|
If ($recurse) {
|
||||||
Get-ChildItem $dest -recurse | Where {$pcx_extensions -contains $_.extension} | % {
|
Get-ChildItem $dest -recurse | Where-Object {$pcx_extensions -contains $_.extension} | ForEach-Object {
|
||||||
Try {
|
Try {
|
||||||
Expand-Archive $_.FullName -OutputPath $dest -Force -WhatIf:$check_mode
|
Expand-Archive $_.FullName -OutputPath $dest -Force -WhatIf:$check_mode
|
||||||
} Catch {
|
} Catch {
|
||||||
|
|
|
@ -14,7 +14,7 @@ $LOGON32_PROVIDER_DEFAULT = 0
|
||||||
$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"
|
$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"
|
||||||
|
|
||||||
function Get-User($user) {
|
function Get-User($user) {
|
||||||
$adsi.Children | where {$_.SchemaClassName -eq 'user' -and $_.Name -eq $user }
|
$adsi.Children | Where-Object {$_.SchemaClassName -eq 'user' -and $_.Name -eq $user }
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ function Get-UserFlag($user, $flag) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Set-UserFlag($user, $flag) {
|
function Set-UserFlag($user, $flag) {
|
||||||
$user.UserFlags = ($user.UserFlags[0] -BOR $flag)
|
$user.UserFlags = ($user.UserFlags[0] -BOR $flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ function Clear-UserFlag($user, $flag) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function Get-Group($grp) {
|
function Get-Group($grp) {
|
||||||
$adsi.Children | where { $_.SchemaClassName -eq 'Group' -and $_.Name -eq $grp }
|
$adsi.Children | Where-Object { $_.SchemaClassName -eq 'Group' -and $_.Name -eq $grp }
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ If ($null -ne $groups) {
|
||||||
ElseIf ($groups -isnot [System.Collections.IList]) {
|
ElseIf ($groups -isnot [System.Collections.IList]) {
|
||||||
Fail-Json $result "groups must be a string or array"
|
Fail-Json $result "groups must be a string or array"
|
||||||
}
|
}
|
||||||
$groups = $groups | ForEach { ([string]$_).Trim() } | Where { $_ }
|
$groups = $groups | ForEach-Object { ([string]$_).Trim() } | Where-Object { $_ }
|
||||||
If ($null -eq $groups) {
|
If ($null -eq $groups) {
|
||||||
$groups = @()
|
$groups = @()
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,7 @@ If ($state -eq 'present') {
|
||||||
$user_obj.SetInfo()
|
$user_obj.SetInfo()
|
||||||
}
|
}
|
||||||
If ($null -ne $groups) {
|
If ($null -ne $groups) {
|
||||||
[string[]]$current_groups = $user_obj.Groups() | ForEach { $_.GetType().InvokeMember("Name", "GetProperty", $null, $_, $null) }
|
[string[]]$current_groups = $user_obj.Groups() | ForEach-Object { $_.GetType().InvokeMember("Name", "GetProperty", $null, $_, $null) }
|
||||||
If (($groups_action -eq "remove") -or ($groups_action -eq "replace")) {
|
If (($groups_action -eq "remove") -or ($groups_action -eq "replace")) {
|
||||||
ForEach ($grp in $current_groups) {
|
ForEach ($grp in $current_groups) {
|
||||||
If ((($groups_action -eq "remove") -and ($groups -contains $grp)) -or (($groups_action -eq "replace") -and ($groups -notcontains $grp))) {
|
If ((($groups_action -eq "remove") -and ($groups -contains $grp)) -or (($groups_action -eq "replace") -and ($groups -notcontains $grp))) {
|
||||||
|
|
|
@ -230,7 +230,9 @@ if ($null -eq $path -and $null -eq $port -and $state -ne "drained") {
|
||||||
try {
|
try {
|
||||||
$exclude_ips = [System.Net.Dns]::GetHostAddresses($exclude_host) | ForEach-Object { Write-Output $_.IPAddressToString }
|
$exclude_ips = [System.Net.Dns]::GetHostAddresses($exclude_host) | ForEach-Object { Write-Output $_.IPAddressToString }
|
||||||
$connection_info = $connection_info | Where-Object { $_ -notin $exclude_ips }
|
$connection_info = $connection_info | Where-Object { $_ -notin $exclude_ips }
|
||||||
} catch {} # ignore invalid hostnames
|
} catch { # ignore invalid hostnames
|
||||||
|
Add-Warning -obj $result -message "Invalid hostname specified $exclude_host"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($connection_info.Count -eq 0) {
|
if ($connection_info.Count -eq 0) {
|
||||||
|
|
|
@ -81,7 +81,7 @@ Foreach ($group in $ACL.Audit)
|
||||||
#exit here if any existing rule matches defined rule, otherwise exit below
|
#exit here if any existing rule matches defined rule, otherwise exit below
|
||||||
#with no matches
|
#with no matches
|
||||||
If (
|
If (
|
||||||
($group | select -expand "*Rights") -eq $rights -and
|
($group | Select-Object -expand "*Rights") -eq $rights -and
|
||||||
$group.AuditFlags -eq $flags -and
|
$group.AuditFlags -eq $flags -and
|
||||||
$group.IdentityReference.Translate([System.Security.Principal.SecurityIdentifier]) -eq $SID -and
|
$group.IdentityReference.Translate([System.Security.Principal.SecurityIdentifier]) -eq $SID -and
|
||||||
$group.InheritanceFlags -eq $inherit -and
|
$group.InheritanceFlags -eq $inherit -and
|
||||||
|
|
|
@ -693,7 +693,7 @@ test_no_log - Invoked with:
|
||||||
hide: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
|
hide: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
|
||||||
data: Oops this is secret: ********
|
data: Oops this is secret: ********
|
||||||
custom: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
|
custom: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
|
||||||
list:
|
list:
|
||||||
- VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
|
- VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
|
||||||
- ********word
|
- ********word
|
||||||
- ********567
|
- ********567
|
||||||
|
|
|
@ -48,14 +48,14 @@ Function Run-Process($executable, $arguments) {
|
||||||
$psi.RedirectStandardOutput = $true
|
$psi.RedirectStandardOutput = $true
|
||||||
$psi.RedirectStandardError = $true
|
$psi.RedirectStandardError = $true
|
||||||
$psi.UseShellExecute = $false
|
$psi.UseShellExecute = $false
|
||||||
|
|
||||||
$proc.Start() | Out-Null # will always return $true for non shell-exec cases
|
$proc.Start() > $null # will always return $true for non shell-exec cases
|
||||||
$stdout = $stderr = [string] $null
|
$stdout = $stderr = [string] $null
|
||||||
|
|
||||||
[Ansible.Command.NativeUtil]::GetProcessOutput($proc.StandardOutput, $proc.StandardError, [ref] $stdout, [ref] $stderr) | Out-Null
|
[Ansible.Command.NativeUtil]::GetProcessOutput($proc.StandardOutput, $proc.StandardError, [ref] $stdout, [ref] $stderr) > $null
|
||||||
$proc.WaitForExit() | Out-Null
|
$proc.WaitForExit() > $null
|
||||||
$actual_args = $stdout.Substring(0, $stdout.Length - 2) -split "`r`n"
|
$actual_args = $stdout.Substring(0, $stdout.Length - 2) -split "`r`n"
|
||||||
|
|
||||||
return $actual_args
|
return $actual_args
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,6 @@ foreach ($entry in $output_dict.GetEnumerator()) {
|
||||||
$key = $entry.Name
|
$key = $entry.Name
|
||||||
$value = $entry.Value
|
$value = $entry.Value
|
||||||
|
|
||||||
$type = $value.GetType()
|
|
||||||
if ($value -is [Hashtable]) {
|
if ($value -is [Hashtable]) {
|
||||||
Assert-Equals -actual $key -expected "inner_hash_table"
|
Assert-Equals -actual $key -expected "inner_hash_table"
|
||||||
foreach ($inner_hash in $value.GetEnumerator()) {
|
foreach ($inner_hash in $value.GetEnumerator()) {
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
$params = Parse-Args $args $true;
|
$params = Parse-Args $args $true;
|
||||||
|
|
||||||
$x = $params.thisPropertyDoesNotExist
|
$params.thisPropertyDoesNotExist
|
||||||
|
|
||||||
$data = Get-Attr $params "data" "pong";
|
$data = Get-Attr $params "data" "pong";
|
||||||
|
|
||||||
|
|
|
@ -1,175 +1,108 @@
|
||||||
examples/scripts/ConfigureRemotingForAnsible.ps1 PSAvoidTrailingWhitespace
|
|
||||||
examples/scripts/ConfigureRemotingForAnsible.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
examples/scripts/ConfigureRemotingForAnsible.ps1 PSCustomUseLiteralPath
|
examples/scripts/ConfigureRemotingForAnsible.ps1 PSCustomUseLiteralPath
|
||||||
examples/scripts/upgrade_to_ps3.ps1 PSAvoidTrailingWhitespace
|
|
||||||
examples/scripts/upgrade_to_ps3.ps1 PSAvoidUsingWriteHost
|
|
||||||
examples/scripts/upgrade_to_ps3.ps1 PSCustomUseLiteralPath
|
examples/scripts/upgrade_to_ps3.ps1 PSCustomUseLiteralPath
|
||||||
examples/scripts/upgrade_to_ps3.ps1 PSUseApprovedVerbs
|
examples/scripts/upgrade_to_ps3.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/executor/powershell/async_watchdog.ps1 PSCustomUseLiteralPath
|
lib/ansible/executor/powershell/async_watchdog.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/executor/powershell/async_wrapper.ps1 PSCustomUseLiteralPath
|
lib/ansible/executor/powershell/async_wrapper.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/executor/powershell/exec_wrapper.ps1 PSCustomUseLiteralPath
|
lib/ansible/executor/powershell/exec_wrapper.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.ArgvParser.psm1 PSUseApprovedVerbs
|
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.ArgvParser.psm1 PSUseApprovedVerbs
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CamelConversion.psm1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 PSProvideCommentHelp # need to agree on best format for comment location
|
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 PSProvideCommentHelp # need to agree on best format for comment location
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 PSUseApprovedVerbs
|
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 PSUseApprovedVerbs
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.FileUtil.psm1 PSCustomUseLiteralPath
|
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.FileUtil.psm1 PSCustomUseLiteralPath
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.FileUtil.psm1 PSProvideCommentHelp
|
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.FileUtil.psm1 PSProvideCommentHelp
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 PSAvoidUsingWMICmdlet
|
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 PSCustomUseLiteralPath
|
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 PSCustomUseLiteralPath
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 PSUseApprovedVerbs
|
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 PSUseApprovedVerbs
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.LinkUtil.psm1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.LinkUtil.psm1 PSUseApprovedVerbs
|
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.LinkUtil.psm1 PSUseApprovedVerbs
|
||||||
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.SID.psm1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/async_status.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/async_status.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/setup.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/setup.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/setup.ps1 PSAvoidUsingEmptyCatchBlock
|
|
||||||
lib/ansible/modules/windows/setup.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/setup.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/setup.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_acl_inheritance.ps1 PSAvoidTrailingWhitespace
|
lib/ansible/modules/windows/win_acl_inheritance.ps1 PSAvoidTrailingWhitespace
|
||||||
lib/ansible/modules/windows/win_audit_rule.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_audit_rule.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_chocolatey.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_chocolatey.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_chocolatey_config.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_chocolatey_config.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_chocolatey_facts.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_chocolatey_facts.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_chocolatey_facts.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_chocolatey_source.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_chocolatey_source.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_copy.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_copy.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_copy.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_credential.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_credential.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_credential.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_credential.ps1 PSUsePSCredentialType # The Credential parameter is a custom .NET type
|
|
||||||
lib/ansible/modules/windows/win_disk_facts.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_dns_client.ps1 PSAvoidGlobalVars
|
|
||||||
lib/ansible/modules/windows/win_dns_client.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_dns_client.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_dns_client.ps1 PSAvoidUsingWMICmdlet
|
|
||||||
lib/ansible/modules/windows/win_dns_client.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_dns_client.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_dns_client.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_dns_client.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_dns_client.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_domain.ps1 PSAvoidUsingEmptyCatchBlock
|
|
||||||
lib/ansible/modules/windows/win_domain.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_domain.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_domain_controller.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_domain_controller.ps1 PSAvoidUsingWMICmdlet
|
|
||||||
lib/ansible/modules/windows/win_domain_controller.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_domain_controller.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_domain_controller.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_domain_controller.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_domain_controller.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_domain_group.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_domain_membership.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_domain_membership.ps1 PSAvoidUsingWMICmdlet
|
|
||||||
lib/ansible/modules/windows/win_domain_membership.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_domain_membership.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_domain_membership.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_domain_membership.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_domain_membership.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_dotnet_ngen.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_dotnet_ngen.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_dsc.ps1 PSAvoidUsingEmptyCatchBlock
|
|
||||||
lib/ansible/modules/windows/win_dsc.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_dsc.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_eventlog.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_eventlog.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_feature.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_feature.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_file_version.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_file_version.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_find.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_find.ps1 PSAvoidUsingEmptyCatchBlock
|
|
||||||
lib/ansible/modules/windows/win_find.ps1 PSAvoidUsingWMICmdlet
|
|
||||||
lib/ansible/modules/windows/win_firewall_rule.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_firewall_rule.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_get_url.ps1 PSUsePSCredentialType # Credential param can take a base64 encoded string as well as a PSCredential
|
lib/ansible/modules/windows/win_get_url.ps1 PSUsePSCredentialType # Credential param can take a base64 encoded string as well as a PSCredential
|
||||||
lib/ansible/modules/windows/win_hotfix.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_hotfix.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_hotfix.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_hotfix.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_hotfix.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_iis_virtualdirectory.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_iis_virtualdirectory.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_iis_webapplication.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_iis_webapplication.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_iis_webapppool.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_iis_webapppool.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_iis_webapppool.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_iis_webbinding.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_iis_webbinding.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_iis_webbinding.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_iis_webbinding.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_iis_webbinding.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_iis_website.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_iis_website.ps1 PSAvoidUsingPositionalParameters
|
|
||||||
lib/ansible/modules/windows/win_iis_website.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_iis_website.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_iis_website.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_lineinfile.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_lineinfile.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_mapped_drive.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_mapped_drive.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_msg.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_package.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_package.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_package.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_package.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_package.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_package.ps1 PSUsePSCredentialType
|
|
||||||
lib/ansible/modules/windows/win_pagefile.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_pagefile.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_pagefile.ps1 PSAvoidUsingPositionalParameters
|
|
||||||
lib/ansible/modules/windows/win_pagefile.ps1 PSAvoidUsingWMICmdlet
|
|
||||||
lib/ansible/modules/windows/win_pagefile.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_pagefile.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_pagefile.ps1 PSUseSupportsShouldProcess
|
lib/ansible/modules/windows/win_pagefile.ps1 PSUseSupportsShouldProcess
|
||||||
lib/ansible/modules/windows/win_pester.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_pester.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_product_facts.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_product_facts.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_product_facts.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_rabbitmq_plugin.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_rabbitmq_plugin.ps1 PSAvoidUsingInvokeExpression
|
lib/ansible/modules/windows/win_rabbitmq_plugin.ps1 PSAvoidUsingInvokeExpression
|
||||||
lib/ansible/modules/windows/win_rabbitmq_plugin.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_rabbitmq_plugin.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_rds_cap.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_rds_cap.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_rds_cap.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_rds_rap.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_rds_rap.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_rds_rap.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_rds_settings.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_rds_settings.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_regedit.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_regedit.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_region.ps1 PSAvoidUsingEmptyCatchBlock
|
|
||||||
lib/ansible/modules/windows/win_region.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_region.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_regmerge.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_regmerge.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_regmerge.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_robocopy.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_robocopy.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_route.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_route.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_scheduled_task_stat.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_scheduled_task_stat.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_scheduled_task_stat.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_security_policy.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_security_policy.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_security_policy.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_security_policy.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_security_policy.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_security_policy.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
lib/ansible/modules/windows/win_share.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_share.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_shell.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_shell.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_shell.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_shell.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_shortcut.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_shortcut.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_snmp.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_snmp.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_stat.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_say.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_say.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_say.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_tempfile.ps1 PSAvoidAssignmentToAutomaticVariable
|
|
||||||
lib/ansible/modules/windows/win_toast.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_unzip.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_unzip.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_unzip.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_unzip.ps1 PSUseApprovedVerbs
|
lib/ansible/modules/windows/win_unzip.ps1 PSUseApprovedVerbs
|
||||||
lib/ansible/modules/windows/win_updates.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_updates.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_uri.ps1 PSAvoidUsingEmptyCatchBlock
|
|
||||||
lib/ansible/modules/windows/win_user.ps1 PSAvoidTrailingWhitespace
|
|
||||||
lib/ansible/modules/windows/win_user.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
lib/ansible/modules/windows/win_user_profile.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_user_profile.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_wait_for.ps1 PSAvoidUsingEmptyCatchBlock
|
|
||||||
lib/ansible/modules/windows/win_wait_for.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_wait_for.ps1 PSCustomUseLiteralPath
|
||||||
lib/ansible/modules/windows/win_webpicmd.ps1 PSAvoidUsingInvokeExpression
|
lib/ansible/modules/windows/win_webpicmd.ps1 PSAvoidUsingInvokeExpression
|
||||||
lib/ansible/modules/windows/win_xml.ps1 PSCustomUseLiteralPath
|
lib/ansible/modules/windows/win_xml.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/collections/collection_root_user/ansible_collections/testns/testcoll/plugins/module_utils/MyPSMU.psm1 PSUseApprovedVerbs
|
test/integration/targets/collections/collection_root_user/ansible_collections/testns/testcoll/plugins/module_utils/MyPSMU.psm1 PSUseApprovedVerbs
|
||||||
test/integration/targets/win_audit_rule/library/test_get_audit_rule.ps1 PSAvoidUsingCmdletAliases
|
|
||||||
test/integration/targets/win_audit_rule/library/test_get_audit_rule.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_audit_rule/library/test_get_audit_rule.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_chocolatey/files/tools/chocolateyUninstall.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_chocolatey/files/tools/chocolateyUninstall.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_chocolatey_source/library/choco_source.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_chocolatey_source/library/choco_source.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_csharp_utils/library/ansible_basic_tests.ps1 PSAvoidTrailingWhitespace
|
|
||||||
test/integration/targets/win_csharp_utils/library/ansible_basic_tests.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_csharp_utils/library/ansible_basic_tests.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_csharp_utils/library/ansible_basic_tests.ps1 PSUseDeclaredVarsMoreThanAssignments # test setup requires vars to be set globally and not referenced in the same scope
|
test/integration/targets/win_csharp_utils/library/ansible_basic_tests.ps1 PSUseDeclaredVarsMoreThanAssignments # test setup requires vars to be set globally and not referenced in the same scope
|
||||||
test/integration/targets/win_csharp_utils/library/ansible_become_tests.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_csharp_utils/library/ansible_become_tests.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_exec_wrapper/library/test_fail.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_exec_wrapper/library/test_fail.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_iis_webbinding/library/test_get_webbindings.ps1 PSUseApprovedVerbs
|
test/integration/targets/win_iis_webbinding/library/test_get_webbindings.ps1 PSUseApprovedVerbs
|
||||||
test/integration/targets/win_module_utils/library/argv_parser_test.ps1 PSAvoidTrailingWhitespace
|
|
||||||
test/integration/targets/win_module_utils/library/argv_parser_test.ps1 PSUseApprovedVerbs
|
test/integration/targets/win_module_utils/library/argv_parser_test.ps1 PSUseApprovedVerbs
|
||||||
test/integration/targets/win_module_utils/library/backup_file_test.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_module_utils/library/backup_file_test.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_module_utils/library/camel_conversion_test.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
test/integration/targets/win_module_utils/library/command_util_test.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_module_utils/library/command_util_test.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_psmodule/files/setup_modules.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_psmodule/files/setup_modules.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_ping/library/win_ping_strict_mode_error.ps1 PSUseDeclaredVarsMoreThanAssignments
|
|
||||||
test/integration/targets/win_reboot/templates/post_reboot.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_reboot/templates/post_reboot.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_script/files/test_script.ps1 PSAvoidUsingWriteHost
|
|
||||||
test/integration/targets/win_script/files/test_script_creates_file.ps1 PSAvoidUsingCmdletAliases
|
test/integration/targets/win_script/files/test_script_creates_file.ps1 PSAvoidUsingCmdletAliases
|
||||||
test/integration/targets/win_script/files/test_script_removes_file.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_script/files/test_script_removes_file.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_script/files/test_script_with_args.ps1 PSAvoidUsingWriteHost
|
|
||||||
test/integration/targets/win_script/files/test_script_with_splatting.ps1 PSAvoidUsingWriteHost
|
|
||||||
test/integration/targets/win_stat/library/test_symlink_file.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_stat/library/test_symlink_file.ps1 PSCustomUseLiteralPath
|
||||||
test/integration/targets/win_user_right/library/test_get_right.ps1 PSCustomUseLiteralPath
|
test/integration/targets/win_user_right/library/test_get_right.ps1 PSCustomUseLiteralPath
|
||||||
test/runner/setup/windows-httptester.ps1 PSCustomUseLiteralPath
|
test/runner/setup/windows-httptester.ps1 PSCustomUseLiteralPath
|
||||||
|
test/integration/targets/win_script/files/test_script.ps1 PSAvoidUsingWriteHost # Keep
|
||||||
|
test/integration/targets/win_script/files/test_script_with_args.ps1 PSAvoidUsingWriteHost # Keep
|
||||||
|
test/integration/targets/win_script/files/test_script_with_splatting.ps1 PSAvoidUsingWriteHost # Keep
|
||||||
|
lib/ansible/modules/windows/win_domain.ps1 PSAvoidUsingEmptyCatchBlock # Keep
|
||||||
|
lib/ansible/modules/windows/win_dsc.ps1 PSAvoidUsingEmptyCatchBlock # Keep
|
||||||
|
lib/ansible/modules/windows/win_find.ps1 PSAvoidUsingEmptyCatchBlock # Keep
|
||||||
|
lib/ansible/modules/windows/win_region.ps1 PSAvoidUsingEmptyCatchBlock # Keep
|
||||||
|
lib/ansible/modules/windows/win_uri.ps1 PSAvoidUsingEmptyCatchBlock # Keep
|
||||||
|
lib/ansible/modules/windows/win_find.ps1 PSAvoidUsingEmptyCatchBlock # Keep for now
|
||||||
|
lib/ansible/modules/windows/win_domain_membership.ps1 PSAvoidGlobalVars # New PR
|
||||||
|
lib/ansible/modules/windows/win_domain_controller.ps1 PSAvoidGlobalVars # New PR
|
||||||
|
lib/ansible/modules/windows/win_pagefile.ps1 PSUseDeclaredVarsMoreThanAssignments # New PR - bug test_path should be testPath
|
Loading…
Reference in a new issue