Pipeworks.psm1
param([switch]$clean) #region PowerShell tools . $psScriptRoot\Get-FunctionFromScript.ps1 . $psScriptRoot\Write-PowerShellHashtable.ps1 . $psScriptRoot\Import-PSData.ps1 . $psScriptRoot\Export-PSData.ps1 #endregion #region Pipeworks General Tools . $psScriptRoot\Get-Web.ps1 . $psScriptRoot\Get-PipeworksManifest.ps1 . $psScriptRoot\New-PipeworksManifest.ps1 #endregion #region Login System Commands . $psScriptRoot\Get-Person.ps1 . $psScriptRoot\Join-Website.ps1 . $psScriptRoot\Confirm-Person.ps1 . $psScriptRoot\Add-Interaction.ps1 #endregion #region Core Web Commands . $psScriptRoot\Invoke-WebCommand.ps1 . $psScriptRoot\ConvertFrom-Markdown.ps1 . $psScriptRoot\Compress-Data.ps1 . $psScriptRoot\Expand-Data.ps1 . $psScriptRoot\Get-Walkthru.ps1 . $psScriptRoot\Get-WebConfigurationSetting.ps1 . $psScriptRoot\Get-WebInput.ps1 . $psScriptRoot\New-Region.ps1 . $psScriptRoot\New-RssItem.ps1 . $psScriptRoot\New-WebPage.ps1 . $psScriptRoot\Out-HTML.ps1 . $psScriptRoot\Out-RSSFeed.ps1 . $psScriptRoot\Request-CommandInput.ps1 . $psScriptRoot\Send-Email.ps1 . $psScriptRoot\Write-WalkthruHtml.ps1 . $psScriptRoot\Write-Ajax.ps1 . $psScriptRoot\Write-Css.ps1 . $psScriptRoot\Write-Host.ps1 . $psScriptRoot\Write-Link.ps1 . $psScriptRoot\Write-ScriptHtml.ps1 #endregion Core Web Commands #region ASP & HTML code Generators . $psScriptRoot\ConvertFrom-InlinePowerShell.ps1 # . $psScriptRoot\ConvertTo-CommandService.ps1 . $psScriptRoot\ConvertTo-ModuleService.ps1 . $psScriptRoot\Write-AspNetScriptPage.ps1 #endregion #region Mini Servers and their deploy tools . $psScriptRoot\Start-PSNode.ps1 . $psScriptRoot\Open-Port.ps1 . $psScriptRoot\Close-Port.ps1 . $psScriptRoot\Install-PSNode.ps1 #endregion Mini Servers and their deploy tools #region Daemons . $psScriptRoot\Out-Daemon.ps1 . $psScriptRoot\Remove-Daemon.ps1 . $psScriptRoot\Watch-Daemon.ps1 #endregion Daemons #region Azure Tools . $psScriptRoot\Add-AzureRole.ps1 . $psScriptRoot\Add-AzureLocalResource.ps1 . $psScriptRoot\Add-AzureSetting.ps1 . $psScriptRoot\Add-AzureStartupTask.ps1 . $psScriptRoot\Add-AzureWebSite.ps1 . $psScriptRoot\New-AzureServiceDefinition.ps1 . $psScriptRoot\Out-AzureService.ps1 . $psScriptRoot\Publish-AzureService.ps1 . $psScriptRoot\Get-Blob.ps1 . $psScriptRoot\Import-Blob.ps1 . $psScriptRoot\Export-Blob.ps1 . $psScriptRoot\Remove-Blob.ps1 #endregion Azure Tools . $psScriptRoot\Get-Email.ps1 . $psScriptRoot\Send-TextMessage.ps1 . $psScriptRoot\Get-TextMessage.ps1 . $psScriptRoot\Get-PhoneCall.ps1 . $psScriptRoot\Send-PhoneCall.ps1 . $psScriptRoot\Out-Zip.ps1 . $psScriptRoot\Expand-Zip.ps1 #region Storage Tools . $psScriptRoot\Write-CRUD.ps1 . $psScriptRoot\Show-WebObject.ps1 #endregion Storage Tools #region SQL Tools . $psScriptRoot\Select-SQL.ps1 . $psScriptRoot\Add-SQLTable.ps1 . $psScriptRoot\Get-SQLTable.ps1 . $psScriptRoot\Update-SQL.ps1 . $psScriptRoot\Remove-SQL.ps1 . $psScriptRoot\New-SQLDatabase.ps1 . $psScriptRoot\Import-StoredProcedure.ps1 #endregion SQL Tools #region Datatables . $psScriptRoot\New-DataTable.ps1 . $psScriptRoot\ConvertTo-DataTable.ps1 . $psScriptRoot\Import-DataTable.ps1 . $psScriptRoot\Export-DataTable.ps1 . $psScriptRoot\Select-DataTable.ps1 . $psScriptRoot\Update-DataTable.ps1 #endregion Datatables #region Secure Scripting Tools . $psScriptRoot\Add-SecureSetting.ps1 . $psScriptRoot\Get-SecureSetting.ps1 . $psScriptRoot\Remove-SecureSetting.ps1 #endregion Secure Scripting Tools #region FTP Tools . $psScriptRoot\Get-FTP.ps1 . $psScriptRoot\Push-FTP.ps1 #endregion FTP Tools #region Deployment Tools . $psScriptRoot\Add-Deployment.ps1 . $psScriptRoot\Get-Deployment.ps1 . $psScriptRoot\Import-Deployment.ps1 . $psScriptRoot\Switch-TestDeployment.ps1 . $psScriptRoot\Publish-Deployment.ps1 . $psScriptRoot\Push-Deployment.ps1 . $psScriptRoot\Remove-Deployment.ps1 . $psScriptRoot\Wait-Deployment.ps1 #endregion Deployment Tools #region Web Services . $psScriptRoot\Get-Paid.ps1 . $psScriptRoot\Get-Translation.ps1 . $psScriptRoot\Find-Factual.ps1 . $psScriptRoot\Invoke-Office365.ps1 . $psScriptRoot\Search-WolframAlpha.ps1 . $psScriptRoot\Search-Engine.ps1 #endregion Web Services #region Web Frameworks . $psScriptRoot\Get-Bootstrapped.ps1 . $psScriptRoot\Use-Less.ps1 #endregion Web Frameworks #region Kitchen Sink . $psScriptRoot\Get-Hash.ps1 . $pSScriptRoot\New-RDPFile.ps1 . $pSScriptRoot\Start-At.ps1 . $psScriptRoot\Resolve-Location.ps1 . $psScriptRoot\Use-Schematic.ps1 . $psScriptRoot\ConvertTo-ServiceUrl.ps1 . $psScriptRoot\Publish-WebSite.ps1 . $psScriptRoot\test-w3c.ps1 . $psScriptRoot\Get-WebTemplateEditableRegion.ps1 . $psScriptRoot\Select-WMI.ps1 . $psScriptRoot\Update-WMI.ps1 #endregion Kitchn Sink #region Data & Parallelism . $psScriptRoot\Invoke-Parallel.ps1 . $psScriptRoot\Start-MapReduce.ps1 #endregion Data & Parallelism #region Initialize Shared Data $script:FunctionsInEveryRunspace = 'ConvertFrom-Markdown', 'Confirm-Person', 'Get-Person', 'Get-Web', 'Get-PipeworksManifest', 'Get-WebConfigurationSetting', 'Get-FunctionFromScript', 'Get-Walkthru', 'Get-WebInput', 'New-RssItem', 'Invoke-WebCommand', 'Out-RssFeed', 'Request-CommandInput', 'New-Region', 'New-WebPage', 'Out-Html', 'Write-Css', 'Write-Host', 'Write-Link', 'Write-ScriptHTML', 'Write-WalkthruHTML', 'Write-PowerShellHashtable', 'Compress-Data', 'Expand-Data', 'Import-PSData', 'Export-PSData', 'ConvertTo-ServiceUrl', 'Get-SecureSetting', 'Search-Engine', 'Get-Hash' #endregion Add-Type -AssemblyName System.Web, System.Xml.Linq $linq = [Reflection.Assembly]::LoadWithPartialName("System.Linq") #region Compile or Import Azure Table Storage Cmdlets $dllPath = "$psScriptRoot\AzureTableStorage.CLR$($psVersionTable.CLRVersion).dll" $m = if ($Clean -or (-not (Test-Path $dllPath))){ $files = Get-ChildItem $psScriptRoot\CSharp -Filter *Azure*.cs $fileContents = foreach ($f in $files) { [IO.File]::ReadAllText($f.Fullname) } $languageVersion = @{Language='CSharpVersion3'} if ($psVersionTable.CLRVersion -ge '4.0') { $languageVersion = @{} } if ($clean) { $languageVersion.OutputAssembly = "$dllPath" } $linqLocation = [System.Linq.IQueryable].Assembly.Location $xlinqLocation = [System.Xml.Linq.XNamespace].Assembly.Location $systemWebLocation = Add-Type -AssemblyName System.Web -PassThru | Select-Object -ExpandProperty Assembly -Unique | Select-Object -ExpandProperty Location -Unique $refs = if ($pslanguageTable.CLRVersion -lt '4.0') { 'System.Xml', 'System.Net', $xlinqLocation,([Management.Automation.Languageprimitives].Assembly.Location), $systemWebLocation -ne '' | Select-Object -Unique } else { 'System.Xml', 'System.Net', $linqLocation, $xlinqLocation,([Management.Automation.Languageprimitives].Assembly.Location), $systemWebLocation -ne '' | Select-Object -Unique } $m = Add-Type @languageVersion -ReferencedAssemblies $refs -TypeDefinition " $($fileContents -join ([Environment]::NewLine)) " -PassThru | Select-Object -ExpandProperty Assembly | Import-Module -PassThru if ($compilationIssues) { $compilationIssues | Out-String | Write-Debug } } else { Import-Module $dllPath -PassThru } #endregion #region EC2 if (-not ('Amazon.Runtime.BasicAWSCredentials' -as [type])) { "$env:ProgramFiles", "${env:ProgramFiles(x86)}" -ne "" | Get-ChildItem -Filter 'AWS SDK for .NET' | Get-ChildItem -Filter 'bin' | Get-ChildItem -Filter *.dll | Select-Object -First 1 | Import-Module -Name {$_.Fullname } } $clientTypes = 'Amazon.Route53.AmazonRoute53Client', 'Amazon.ElasticMapReduce.AmazonElasticMapReduceClient', 'Amazon.CloudFront.AmazonCloudFrontClient', 'Amazon.ElasticLoadBalancing.AmazonElasticLoadBalancingClient', 'Amazon.SimpleNotificationService.AmazonSimpleNotificationServiceClient', 'Amazon.EC2.AmazonEC2Client', 'Amazon.SimpleDB.AmazonSimpleDBClient', 'Amazon.ElasticBeanstalk.AmazonElasticBeanstalkClient', 'Amazon.DynamoDB.AmazonDynamoDBClient', 'Amazon.IdentityManagement.AmazonIdentityManagementServiceClient', 'Amazon.AutoScaling.AmazonAutoScalingClient', 'Amazon.SQS.AmazonSQSClient', 'Amazon.CloudFormation.AmazonCloudFormationClient', 'Amazon.S3.AmazonS3Client' -as [type[]] $script:AmazonAccessKeySettingName = 'AwsAccessKeyId' $script:AmazonSecretAccessKeySettingName = 'AmazonSecretAccessKey' $script:AmazonAccessKey = Get-SecureSetting -Name $script:AmazonAccessKeySettingName -ValueOnly $script:AmazonSecretAccessKey = Get-SecureSetting -Name $script:AmazonSecretAccessKeySettingName -ValueOnly if ($script:AmazonAccessKey -and $script:AmazonSecretAccessKey -and ('Amazon.Runtime.BasicAWSCredentials' -as [type])) { $script:AwsCredential = New-Object Amazon.Runtime.BasicAWSCredentials $script:AmazonAccessKey, $script:AmazonSecretAccessKey } if ($script:AwsCredential) { $script:AwsConnections = $clientTypes | ForEach-Object -Begin { $Connections = @{} } -process { $connections[$_.Name.Replace('Amazon', '').Replace('Client','')] = New-Object $_.Fullname $script:AwsCredential.GetCredentials().AccessKey, $script:AwsCredential.GetCredentials().ClearSecretKey } -end { New-Object PSObject -Property $connections } } . $psScriptRoot\Set-AwsConnectionInfo.ps1 if ($script:AwsConnections) { . $psScriptRoot\Add-EC2.ps1 . $psScriptRoot\Get-EC2.ps1 . $psScriptRoot\Reset-EC2.ps1 . $psScriptRoot\Get-Ami.ps1 . $psScriptRoot\Get-EC2InstancePassword.ps1 . $psScriptRoot\Get-EC2AvailabilityZone.ps1 . $psScriptRoot\Get-EC2SecurityGroup.ps1 . $psScriptRoot\Get-EC2KeyPair.ps1 . $psScriptRoot\Open-EC2Port.ps1 . $psScriptRoot\Remove-EC2.ps1 . $psScriptRoot\Remove-EC2KeyPair.ps1 . $psScriptRoot\Remove-EC2SecurityGroup.ps1 . $psScriptRoot\Enable-EC2Remoting.ps1 . $psScriptRoot\Wait-EC2.ps1 . $psScriptRoot\Connect-EC2.ps1 . $psScriptRoot\Invoke-EC2.ps1 } else { } Set-Alias cms ConvertTo-ModuleService Set-Alias paz Publish-AzureService Set-Alias Publish-WebService Publish-WebSite Set-Alias pws Publish-WebSite Set-Alias ieo365 Invoke-Office365 Set-Alias wasp Write-AspDotNetScriptPage Set-Alias psnode Start-PSNode Set-Alias ohtml Out-HTML Set-Alias markdown ConvertFrom-Markdown Set-Alias gweb Get-Web Set-Alias sql Select-SQL Set-Alias iwc Invoke-WebCommand Set-Alias impsd1 Import-PSData Set-Alias expsd1 Export-PSData Set-Alias imblob Import-Blob Set-Alias exblob Export-Blob Set-Alias text Send-TextMessage Set-Alias txt Send-TextMessage Set-Alias call Send-PhoneCall Set-Alias gblob Get-Blob Set-Alias rmblob Remove-Blob Set-Alias Remove-Service -Value Remove-Daemon Export-ModuleMember -Function * -Alias * -Cmdlet * #endregion |