Update-BePowerShellContent.ps1
function Update-BePowerShellContent { <# .SYNOPSIS First Testfunction .DESCRIPTION Mit dieser Funktion werden die Daten von BePowershell geholt. Hierbei wird ein Merge ausgeführt. Es ist zwingend notwendig das ein Azure-Account für den Datenspeicher verwendet wird. .INPUTS String String .OUTPUTS None .EXAMPLE Get-BePowerShellContent Ausgabe Ausgabe .EXAMPLE Get-BePowerShellContent Ausgabe Ausgabe .NOTES #> [CmdletBinding()] param( #Dieser Schalter ermöglicht eine alternative Authentifizierung bei Azure [Parameter(Mandatory = $false)] [switch]$AlternativeAuthentication, #Pfad zum Speicherort für die abzulegenden Daten [Parameter(Mandatory = $false)] $Path = $BePowershellLocalPath, #Containername aus welchem Quelldateien kopiert werden [Parameter(Mandatory = $false)] [string]$BlobContainerName = 'master', #Dieser Schalter erzwingt die neueingabe von Benutzerdaten bei der Anmeldung an Azure [Parameter(Mandatory = $false)] [switch]$ForceConnection, #Dieser Schalter deaktviert das automatische Eintragen des Download-Ziels in $env:PsModulePath [Parameter(Mandatory = $false)] [switch]$NoProfileModification, #Mit diesem Parameter lassen sich einzelne Dateien aus einem Blob-Storage-Container herunterladen (anstatt des gesamten Containers) [Parameter(Mandatory = $false)] [string[]]$FileName, #switch for system wide installation [Parameter(Mandatory = $false)] [switch]$ToSystem ) Begin { if (!(get-module Az.Storage -ListAvailable)) { Start-Process PowerShell.exe -Verb runas -ArgumentList '-Command "& { Install-Module Az -AllowClobber -Force -Verbose ; Write-Host done ; Start-Sleep -Seconds 5 ; exit }"' -Wait } if (!$ToSystem) { $PsPath = $Path.TrimEnd("\") } else { $PsPath = "$env:windir\System32\WindowsPowershell\v1.0\Modules\" } } Process { if (!$ConnectionAzAccount -or $ForceConnection) { if (!$AzTenantId_BeTerna -or !$AzSubscriptionId_BeTerna) { if (Get-Module -ListAvailable BeAzure -ErrorAction SilentlyContinue) { Import-Module BeAzure -DisableNameChecking -WarningAction SilentlyContinue $global:AzTenantId_BeTerna = $AzureEnvironment["be-terna"].TenantId $global:AzSubscriptionId_BeTerna = $AzureEnvironment["be-terna"].SubscriptionId } else { $global:AzTenantId_BeTerna = Read-Host -Prompt "enter BE-terna Azure Tenant ID" $global:AzSubscriptionId_BeTerna = Read-Host -Prompt "enter BE-terna Azure Subscription ID" } } if ($AlternativeAuthentication) { $MyCredential = Get-Credential $global:ConnectionAzAccount = Connect-AzAccount -TenantId $global:AzTenantId_BeTerna -Subscription $global:AzSubscriptionId_BeTerna -Credential $MyCredential } else { $global:ConnectionAzAccount = Connect-AzAccount -TenantId $global:AzTenantId_BeTerna -Subscription $global:AzSubscriptionId_BeTerna } } if ($ConnectionAzAccount) { $StorageAcc = Get-AzStorageAccount -ResourceGroupName $global:AzResGrpName_StorageBlob -Name $global:AzStorageAccountName $StorageContext = $StorageAcc.Context $StorageContainer = Get-AzStorageContainer -Context $StorageContext | Where-Object -FilterScript { $_.Name -eq $BlobContainerName } $Blobs = Get-AzStorageBlob -Container $StorageContainer.Name -Context $StorageContext if ($Blobs -and !$ToSystem) { $null = Remove-Item $PsPath -Recurse -Force } foreach ($Blob in $Blobs) { $DestPath = Join-Path -Path $PsPath -ChildPath ($Blob.Name) $null = New-Item ($DestPath) -ItemType File -Force if ($FileName) { if ($FileName -contains (($Blob.Name.split("/")[-1]))) { Get-AzStorageBlobContent -Blob $Blob.Name -Container $StorageContainer.Name -Context $StorageContext -Destination $DestPath -Force } else { continue } } else { Get-AzStorageBlobContent -Blob $Blob.Name -Container $StorageContainer.Name -Context $StorageContext -Destination $DestPath -Force } } if (!$NoProfileModification) { $ModulePaths = $env:PSModulePath.split(';') if ($ModulePaths -notcontains $PsPath -and !$ToSystem) { $Command = { $PsPath = $args[0] $originalpaths = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PSModulePath).PSModulePath $newPath = ($originalpaths + ';' + $PsPath) Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PSModulePath -Value $newPath } Start-Process powershell -verb runas -ArgumentList (' -Command "& {' + $Command + '}" '), $PsPath } } } } End { Write-Output -InputObject $PsPath Get-Module BeHub | Where-Object { $_.Path -ne "$env:USERPROFILE\Documents\BePowerShell\BeHub\loader.psm1" } | Uninstall-Module -Force -ErrorAction SilentlyContinue } } # SIG # Begin signature block # MIIQSgYJKoZIhvcNAQcCoIIQOzCCEDcCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUW5i0g5Q6/UIF3LMQZAzwNrkU # sKuggg2hMIIGgTCCBGmgAwIBAgITZQAAAAshjJ4TrsC61QAAAAAACzANBgkqhkiG # 9w0BAQsFADBCMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFTATBgoJkiaJk/IsZAEZ # FgV0ZXJuYTESMBAGA1UEAxMJVFJOUk9PVENBMB4XDTE3MDkwNDEzMTIwMFoXDTI3 # MDkwNDEzMjIwMFowWzETMBEGCgmSJomT8ixkARkWA2NvbTEYMBYGCgmSJomT8ixk # ARkWCGJlLXRlcm5hMRQwEgYKCZImiZPyLGQBGRYEY29ycDEUMBIGA1UEAxMLQkUt # dGVybmEtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDs/keeRFkb # 5gpRrxtgP7Gikp6q1460/7Rzt7b8eGrzGSy6QzJB2aD7bZ8dj/b9DdNiAG/PJ/Yy # m935OGjV6Tdu01SLkq2I9pw+ydpb+HDHaYt10CTM+5d6sCpptFa7+oNTnIB5L84y # vv1TYEEWt65dO/4ECTEExwZ+h0AV9QDQN8KfQ14POFY/b3m9JfwByK9ajxTTebT9 # oNbh3u7VOUaVDVWEGN6DlAc323G7MgrjrU41RVPUMQAgJTS0XasqaAq+SEaKzM3c # CBB5XKUmdE2upg9VlvYB1VC3pVT2YYqbEFR7osZgbkoJkrOabsXLL8KKg16uq65r # zTSOyDfRu7olAgMBAAGjggJVMIICUTASBgkrBgEEAYI3FQEEBQIDAwADMCMGCSsG # AQQBgjcVAgQWBBQLk1/35PxB+Ojjv78gTbmPxXI2rTAdBgNVHQ4EFgQUiLx4Z/Xr # rg/SZ68evLTX9YeO+4wwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0P # BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULtzBQVWpM0QmWgyC # MaFEn18ikeYwgcQGA1UdHwSBvDCBuTCBtqCBs6CBsIYxaHR0cDovL2liY20uYmUt # dGVybmEuY29tL0NlcnRFbnJvbGwvVFJOUk9PVENBLmNybIZ7bGRhcDovLy9DTj1U # Uk5ST09UQ0EsQ049VFJOUk9PVENBLENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBT # ZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPWNvcnAsREM9 # YmUtdGVybmEsREM9Y29tMIHVBggrBgEFBQcBAQSByDCBxTBHBggrBgEFBQcwAoY7 # aHR0cDovL2liY20uYmUtdGVybmEuY29tL0NlcnRFbnJvbGwvVFJOUk9PVENBX1RS # TlJPT1RDQS5jcnQwegYIKwYBBQUHMAKGbmxkYXA6Ly8vQ049VFJOUk9PVENBLENO # PUFJQSxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1D # b25maWd1cmF0aW9uLERDPWNvcnAsREM9YmUtdGVybmEsREM9Y29tMA0GCSqGSIb3 # DQEBCwUAA4ICAQCBAi/Ux7oFuWHxXc2x5qYU8TmNByWWOTvGgPkV/1puUaVWtnMa # oVOoMdecrSYc7eRiUQI0yZBejvZkgJQq61HvNRQocw+OCAatwmHZRSVR+PYf5lAz # DCZRF2Aa/h0oFRUr9t9+JMMy9HaealHSReUBZek0lVzC1TrtLK2Ol5u7seWNNqOg # 2H553vA5So2ObkKVqlRRinkKNCraD6FRWYxEZK+VSiHd54QxP79CjiOFFQ96lx8Z # pSifHQYIbKcULxvxKvkoI/jgoHKnpkLmi3PpMSbVlZLLpM94ox0jJfyNv2g4hq+A # iTiCa5lAYhJk2vUfzvz69UZYdMJ1YIAaQ3pcAeFAdxdgt8H5AooJP7qKe6xYqN3G # W8Hx5hTCceo4m6HlTiDuKDFTJMUyTvXdPQ0INWfQlQaBOiJsFRgaiZI7fV0bVAiS # cuI8pOYkUp3QWy1iPwyEiGhGmrHSlL5IdGTMgpHRyW2yREhVQ2cx+r7JpE9V29Tw # 7PJgh/awoQ8ayLXqBm6Z9rPh3rgIyo4yq7iS84mxzeCxUHEqRxcFhghepO9qLlil # cLkScC4tH77i8DRvakwdu+rz+9qWAkARZit6ZkMHMtxVUvGTXRe4XYCJKT6/Uh9N # jYcBtYLoynsTUY+bRqXmFyF7PbakBaMcGjiUaeRzvXwXQ1YCt6NH9S7TKzCCBxgw # ggYAoAMCAQICE3EAAZHHuffRX7prFsYAAwABkccwDQYJKoZIhvcNAQELBQAwWzET # MBEGCgmSJomT8ixkARkWA2NvbTEYMBYGCgmSJomT8ixkARkWCGJlLXRlcm5hMRQw # EgYKCZImiZPyLGQBGRYEY29ycDEUMBIGA1UEAxMLQkUtdGVybmEtQ0EwHhcNMjQw # NDI0MTIyMzE4WhcNMjcwOTA0MTMyMjAwWjCBnzETMBEGCgmSJomT8ixkARkWA2Nv # bTEYMBYGCgmSJomT8ixkARkWCGJlLXRlcm5hMRQwEgYKCZImiZPyLGQBGRYEY29y # cDERMA8GA1UECxMIQkUtdGVybmExDjAMBgNVBAsTBVVzZXJzMQswCQYDVQQLEwJE # RTEQMA4GA1UECxMHTGVpcHppZzEWMBQGA1UEAxMNQmFzdGlhbiBLbm9vcDCCASIw # DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOSLp7tVuyW1rtM2163e6iRZrlsk # oQXvRClSn9b9kuLJPLvIzUj9f2kjQMdI0JcolhCydQxHg5V0TXLvPE1H64X5wi9p # Zrr1mL4oe3sJ9q7MV3oY1oKEOQ+MVSykVoWPXpNM5tO3rYCfXXHzsbiX9b+AT94m # oYb3kbmyRNGK3eem0bkX9bj2D6nVDOg0MDRyp+grFyZtE+LMHptnmeE/Qxk5dylr # 4xJ5HXFYMS1AjpRCcLkl6lQHFYYr4h7j5sgfYHqbo/uQ3cUU1Ms3bVXJl1wgti6A # PXjfXq3b8vcHzi1KZlHainUEfenAXEwuMn3Ckw+BIhj/lxbABRSuJpKLXK0CAwEA # AaOCA44wggOKMDsGCSsGAQQBgjcVBwQuMCwGJCsGAQQBgjcVCIS9i3GCvY5/7Z8v # hIumYYSk7nF39YkwhteBegIBZAIBEDATBgNVHSUEDDAKBggrBgEFBQcDAzAOBgNV # HQ8BAf8EBAMCB4AwGwYJKwYBBAGCNxUKBA4wDDAKBggrBgEFBQcDAzAdBgNVHQ4E # FgQUcAn0yTftlvIEk5p1MX8ZytKqSHwwHwYDVR0jBBgwFoAUiLx4Z/Xrrg/SZ68e # vLTX9YeO+4wwggETBgNVHR8EggEKMIIBBjCCAQKggf+ggfyGgcFsZGFwOi8vL0NO # PUJFLXRlcm5hLUNBKDMpLENOPUJFVElCS0NBMDEsQ049Q0RQLENOPVB1YmxpYyUy # MEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9 # Y29ycCxEQz1iZS10ZXJuYSxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlz # dD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50hjZodHRwOi8v # aWJjbS5iZS10ZXJuYS5jb20vQ2VydEVucm9sbC9CRS10ZXJuYS1DQSgzKS5jcmww # ggEpBggrBgEFBQcBAQSCARswggEXMIGzBggrBgEFBQcwAoaBpmxkYXA6Ly8vQ049 # QkUtdGVybmEtQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENO # PVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9Y29ycCxEQz1iZS10ZXJuYSxE # Qz1jb20/Y0FDZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRp # b25BdXRob3JpdHkwXwYIKwYBBQUHMAKGU2h0dHA6Ly9pYmNtLmJlLXRlcm5hLmNv # bS9DZXJ0RW5yb2xsL0JFVElCS0NBMDEuY29ycC5iZS10ZXJuYS5jb21fQkUtdGVy # bmEtQ0EoMykuY3J0MDUGA1UdEQQuMCygKgYKKwYBBAGCNxQCA6AcDBpCYXN0aWFu # Lktub29wQGJlLXRlcm5hLmNvbTBOBgkrBgEEAYI3GQIEQTA/oD0GCisGAQQBgjcZ # AgGgLwQtUy0xLTUtMjEtMjg3MjY3MTU4NC02ODQxNjUxNzktMTU3NzU5ODI5Mi0x # NjgzMA0GCSqGSIb3DQEBCwUAA4IBAQAFH3EhC1ZvoLTERtlk4l5reo2LdoDu4s/a # d0xkjBG209elPdBnhE26QSlJgrmD313I3kTvpoRGE4eYb2+ppvBkIVjPzOTgxGtY # LuyoLhnVsPKdfH6//UygFPmdNNRFXHZENzGJ92ZgGnNzNFfUXMVAN3CRdX3KGMTq # Uxt7/1FUONIGB4MfwCIFeCxdX7ZsPXMl7yfDFgzVjB4Si5LLpvJqMeVwWcVr3Gfz # iKs4iQUWLb453dSvdeJiLD1YVodRPsuLBWyM3bpJjm6AhhAZzlch4trtUJal/Ldn # VaoTmvIXEtK+hEXDBLuo325KJRex2kVgrK1IKt82J6yKnezSY41OMYICEzCCAg8C # AQEwcjBbMRMwEQYKCZImiZPyLGQBGRYDY29tMRgwFgYKCZImiZPyLGQBGRYIYmUt # dGVybmExFDASBgoJkiaJk/IsZAEZFgRjb3JwMRQwEgYDVQQDEwtCRS10ZXJuYS1D # QQITcQABkce599FfumsWxgADAAGRxzAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIB # DDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEE # AYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUEH/yglBhTnQJ # QcKZaUZrDE9H/kUwDQYJKoZIhvcNAQEBBQAEggEAeI2Q7dXT+kxh0Kyw2wYRILs4 # 5PqMxsE1C+Xu4ro19AlETZJNI5CWFp5oISbJ7xCInp1EArvMIzTJuki6b0TPqt8L # sKD/Ah46ojYCVZAcI/OCSfXd1gv/nZZScfaWCZyAhF6SLw8xJLE055+L5XtB30tE # at/2yD4bJpv8p3pD227SnYbl8zT9AdMcudCiMjECfDcbQo4sItmq+sv+Lac+bCZZ # MTaMi4gIaArS/8/5LZdT5u3n1RWb2NeNodWII2oulZ8/D8bwXaBy2qQWAjwZnOnr # 5ocQl3fIC8DQc5N4lyA1PxWa8uWUNWGB58RlVk6eXH/zOOWiUQ+CJgKr4wewxQ== # SIG # End signature block |