Function Get-UserVariableAge{ Param( [Parameter(Mandatory=$true)]$Variablename ) If ([Environment]::GetEnvironmentVariable("$Variablename`_TimeSet","User")) { [datetime]$TimeSet = [Environment]::GetEnvironmentVariable("$Variablename`_TimeSet","User") $TimeSpan = New-TimeSpan -Start $TimeSet -End $(Get-Date) }else{ $TimeSpan = $false } Return $TimeSpan } Function Delete-UserVariable{ Param( [Parameter(Mandatory=$true)]$Variablename ) [Environment]::SetEnvironmentVariable("$Variablename",$null, "User") [Environment]::SetEnvironmentVariable("$Variablename`_Timeset",$null, "User") } Function Get-IntensiveRefreshTime{ Return 230 } Function Get-UserVariable{ Param( #Set the env var name by default to use int but still make this function generic [Parameter(Mandatory=$true)]$Variablename, [Parameter(Mandatory=$true)]$Prompt, [Parameter()][switch]$Username, [Parameter()][switch]$Password, [Parameter()]$RefreshTime #delete the variable after X minutes ) If($Variablename -eq "intpassword"){ $RefreshTime = Get-IntensiveRefreshTime } #delete the variable if its older then the refresh time $TimeSpan = Get-UserVariableAge -Variablename $Variablename if($TimeSpan.Minutes -gt $RefreshTime){ Delete-UserVariable -Variablename $Variablename } If ([Environment]::GetEnvironmentVariable("$Variablename","User")){ $var = [Environment]::GetEnvironmentVariable("$Variablename","User") }ELSE{ #Prompt for user name $var = Read-Host $Prompt #if($password){ # $var = $var | ConvertTo-SecureString #} if($Username){ #if the user entered the domain, split it on the \ so we just get the username If($var -like "*\*"){$var = $var.Split("\")[1]} } [Environment]::SetEnvironmentVariable("$Variablename",$var, "User") [Environment]::SetEnvironmentVariable("$($Variablename)`_TimeSet",$(Get-Date), "User") } Return $var } $IntUsername = Get-UserVariable -Variablename "IntUsername" -Prompt "Please enter your Intensive username" -Username $Intpassword = Get-UserVariable -Variablename "Intpassword" -Prompt "Please enter your Intensive password" -Password