В течение нескольких дней я изо всех сил пытался найти рабочее решение для этого
Чего я пытаюсь достичь?
Foreach ($item in $webApps){
$WebAppConfig = (Get-AzureRmResource -ResourceType Microsoft.Web/sites/config -ResourceName $item -ResourceGroupName $resourceGroup -ApiVersion $APIVersion)
}
проблема в том, что -resourceName не будет принимать объекты, а только строку
Я ищу способ получить выходные данные следующей команды, преобразовать ее в строку, чтобы онаможет удовлетворять –ResourceName и циклически проходить по каждому элементу в строке
$webApps = (Get-AzureRmResourceGroup -Name $resourceGroup | Get-AzureRmWebApp).name
Возвращает хороший список веб-приложений Azure, которые существуют в указанной ResourceGroup, однако они представлены в виде объекта, который не будет принимать –ResourceName
Я пробовал несколько способов преобразовать выходные данные $ webApps в строку, добавить запятую в конец, затем выполнить –split ',' но, похоже, ничего не работает должным образом, где -ResourceName приметit
Метод 1:
[string]$webAppsArrays =@()
Foreach ($webApp in $webApps){
$webAp+',' -split ','
}
Метод 2:
$
webApps | ForEach-Object {
$webApp = $_ + ","
Write-Host $webApp
}
Метод 3:
$csvPath2 = 'C:\Users\Giann\Documents\_Git Repositorys\QueriedAppList2.csv'
$webApps = (Get-AzureRmResourceGroup -Name $resourceGroup | Get-AzureRmWebApp).name | out-file -FilePath $csvPath1 -Append
$csvFile2 = import-csv -Path $csvPath1 -Header Name
Это выводит список в CSV,однако это все еще объекты, поэтому я не могу передать каждый элемент в –ResourceName
. Я иду по кругу, пытаясь сделать приведенный ниже повторяющийся циклический скрипт
Желаемый конечный результат будетиспользовать приведенный ниже сценарий с массивом webApps, запрашиваемым из предоставленной переменной группы ресурсов:
Любая помощь будет очень полезна для использования этого сценария, но получить динамический списокWebApps из указанной группы ресурсов с учетом ограничений -ResourceName "String" в переменной $ WebAppConfig
Вот оригинальный скрипт для создания ограничений IP для 1 веб-приложения и 1 группы ресурсов с использованиемсвойства из файла CSV:
#Create a Function to create IP Restrictions for 1 Web App and 1 Resource Group, using properties from the CSV file:
#Variables
$WebApp = ""
$resourceGroup =""
$subscription_Id = ''
#Login to Azure
Remove-AzureRmAccount -ErrorAction SilentlyContinue | Out-Null
Login-AzureRmAccount -EnvironmentName AzureUSGovernment -Subscription $subscription_Id
Function CreateIpRestriction {
Param (
[string] $name,
[string] $ipAddress,
[string] $subnetMask,
[string] $action,
[string] $priority
)
$APIVersion = ((Get-AzureRmResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes | Where-Object ResourceTypeName -eq sites).ApiVersions[0]
$WebAppConfig = (Get-AzureRmResource -ResourceType Microsoft.Web/sites/config -ResourceName $WebApp -ResourceGroupName $ResourceGroup -ApiVersion $APIVersion)
$ipRestriction = $WebAppConfig.Properties.ipSecurityRestrictions
$ipRestriction.name = $name
$ipRestriction.ipAddress = $ipAddress
$ipRestriction.subnetMask = $subnetMask
$ipRestriction.action = $action
$ipRestriction.priority = $priority
return $ipRestriction
}
#Set csv file path:
$csvPath5 = 'C:\Users\Giann\Documents\_Git Repositorys\ipRestrictions5.csv'
#import CSV Contents
$ipRestrictionArray = Import-Csv -Path $csvPath5
$ipRestrictions = @()
foreach($item in $ipRestrictionArray){
Write-Host "Adding ipRestriction properties for" $item.name
$newIpRestriction = CreateIpRestriction -name $item.name -ipAddress $item.ipAddress -subnetMask $item.subnetMask -action $item.action -priority $item.priority
$ipRestrictions += $newIpRestriction
}
#Set the new ipRestriction on the WebApp
Set-AzureRmResource -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/config -ResourceName $WebApp/web -ApiVersion $APIVersion -PropertyObject $ipRestrictions