diff --git a/Invoke-OpenSSHConfiguration.ps1 b/Invoke-OpenSSHConfiguration.ps1 index eb014a9..91e8294 100644 --- a/Invoke-OpenSSHConfiguration.ps1 +++ b/Invoke-OpenSSHConfiguration.ps1 @@ -383,6 +383,8 @@ Switch (Test-ProcessElevationStatus) $StartProcessWithOutputParameters.AcceptableExitCodeList = New-Object -TypeName 'System.Collections.Generic.List[System.String]' $StartProcessWithOutputParameters.AcceptableExitCodeList.Add('0') $StartProcessWithOutputParameters.CreateNoWindow = $True + $StartProcessWithOutputParameters.ExecutionTimeout = [System.Timespan]::FromMinutes(2) + $StartProcessWithOutputParameters.ExecutionTimeoutInterval = [System.Timespan]::FromSeconds(5) $StartProcessWithOutputParameters.LogOutput = $True $StartProcessWithOutputParameters.ContinueOnError = $False $StartProcessWithOutputParameters.Verbose = $True @@ -714,6 +716,8 @@ Switch (Test-ProcessElevationStatus) $ValidateConfigParameters.AcceptableExitCodeList = New-Object -TypeName 'System.Collections.Generic.List[System.String]' $ValidateConfigParameters.AcceptableExitCodeList.Add('0') $ValidateConfigParameters.CreateNoWindow = $True + $ValidateConfigParameters.ExecutionTimeout = [System.Timespan]::FromSeconds(30) + $ValidateConfigParameters.ExecutionTimeoutInterval = [System.Timespan]::FromSeconds(5) $ValidateConfigParameters.LogOutput = $True $ValidateConfigParameters.ContinueOnError = $True $ValidateConfigParameters.Verbose = $True @@ -798,7 +802,7 @@ Switch (Test-ProcessElevationStatus) #region Windows Firewall Configuration (Automatic) $FirewallRuleName = 'OpenSSH-Server-In-TCP' - $FirewallProfiles = [System.Enum]::GetValues([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetSecurity.Profile]) + $FirewallProfiles = @('Domain', 'Private', 'Public') ForEach ($FirewallProfile In $FirewallProfiles) { diff --git a/Toolkit/Functions/Start-ProcessWithOutput.ps1 b/Toolkit/Functions/Start-ProcessWithOutput.ps1 index 9d277f8..d27e275 100644 --- a/Toolkit/Functions/Start-ProcessWithOutput.ps1 +++ b/Toolkit/Functions/Start-ProcessWithOutput.ps1 @@ -241,53 +241,64 @@ Function Start-ProcessWithOutput [System.TimeSpan]$InputObject ) - $InputObjectMessageBuilder = New-Object -TypeName 'System.Text.StringBuilder' - - $InputObjectProperties = $InputObject | Select-Object -Property @('Days', 'Hours', 'Minutes', 'Seconds', 'Milliseconds') - - $InputObjectPropertyNameList = New-Object -TypeName 'System.Collections.Generic.List[System.String]' - - ($InputObjectProperties.PSObject.Properties | Where-Object {($_.Value -gt 0)}).Name | ForEach-Object {($InputObjectPropertyNameList.Add($_))} - - $InputObjectPropertyNameListUpperBound = $InputObjectPropertyNameList.ToArray().GetUpperBound(0) - - For ($InputObjectPropertyNameListIndex = 0; $InputObjectPropertyNameListIndex -lt $InputObjectPropertyNameList.Count; $InputObjectPropertyNameListIndex++) - { - $InputObjectPropertyName = $InputObjectPropertyNameList[$InputObjectPropertyNameListIndex] - - $InputObjectPropertyValue = $InputObject.$($InputObjectPropertyName) - - Switch ($True) - { - {($InputObjectPropertyNameList.Count -gt 1) -and ($InputObjectPropertyNameListIndex -eq $InputObjectPropertyNameListUpperBound)} - { - $Null = $InputObjectMessageBuilder.Append('and ') - } - - {($InputObjectPropertyValue -eq 1)} - { - $Null = $InputObjectMessageBuilder.Append("$($InputObjectPropertyValue) $($InputObjectPropertyName.TrimEnd('s').ToLower())") - } - - {($InputObjectPropertyValue -gt 1)} - { - $Null = $InputObjectMessageBuilder.Append("$($InputObjectPropertyValue) $($InputObjectPropertyName.ToLower())") - } - - {($InputObjectPropertyNameList.Count -gt 1) -and ($InputObjectPropertyNameListIndex -ne $InputObjectPropertyNameListUpperBound)} - { - $Null = $InputObjectMessageBuilder.Append(', ') - } - } - } - - $OutputObject = $InputObjectMessageBuilder.ToString() - - Switch ($InputObjectMessageBuilder.Length -gt 0) + Switch ($Null -ine $InputObject) { {($_ -eq $True)} - { + { + $InputObjectMessageBuilder = New-Object -TypeName 'System.Text.StringBuilder' + + $InputObjectProperties = $InputObject | Select-Object -Property @('Days', 'Hours', 'Minutes', 'Seconds', 'Milliseconds') + + $InputObjectPropertyNameList = New-Object -TypeName 'System.Collections.Generic.List[System.String]' + + ($InputObjectProperties.PSObject.Properties | Where-Object {($_.Value -gt 0)}).Name | ForEach-Object {($InputObjectPropertyNameList.Add($_))} + + $InputObjectPropertyNameListUpperBound = $InputObjectPropertyNameList.ToArray().GetUpperBound(0) + + For ($InputObjectPropertyNameListIndex = 0; $InputObjectPropertyNameListIndex -lt $InputObjectPropertyNameList.Count; $InputObjectPropertyNameListIndex++) + { + $InputObjectPropertyName = $InputObjectPropertyNameList[$InputObjectPropertyNameListIndex] + + $InputObjectPropertyValue = $InputObject.$($InputObjectPropertyName) + + Switch ($True) + { + {($InputObjectPropertyNameList.Count -gt 1) -and ($InputObjectPropertyNameListIndex -eq $InputObjectPropertyNameListUpperBound)} + { + $Null = $InputObjectMessageBuilder.Append('and ') + } + + {($InputObjectPropertyValue -eq 1)} + { + $Null = $InputObjectMessageBuilder.Append("$($InputObjectPropertyValue) $($InputObjectPropertyName.TrimEnd('s').ToLower())") + } + + {($InputObjectPropertyValue -gt 1)} + { + $Null = $InputObjectMessageBuilder.Append("$($InputObjectPropertyValue) $($InputObjectPropertyName.ToLower())") + } + + {($InputObjectPropertyNameList.Count -gt 1) -and ($InputObjectPropertyNameListIndex -ne $InputObjectPropertyNameListUpperBound)} + { + $Null = $InputObjectMessageBuilder.Append(', ') + } + } + } + $OutputObject = $InputObjectMessageBuilder.ToString() + + Switch ($InputObjectMessageBuilder.Length -gt 0) + { + {($_ -eq $True)} + { + $OutputObject = $InputObjectMessageBuilder.ToString() + } + + Default + { + $OutputObject = 'N/A' + } + } } Default @@ -295,8 +306,8 @@ Function Start-ProcessWithOutput $OutputObject = 'N/A' } } - - Write-Output -InputObject ($OutputObject) + + Write-Output -InputObject ($OutputObject) } [ScriptBlock]$WriteStandardOutputStream = {