while循环中的Powershell函数不会第一次输出结果,但是会第二次输出结果,两次

问题描述 投票:0回答:2

您可以看到,脚本运行后,我有5个选项可供选择。当我按1时,会打印出option 1 selected“,但是函数get_all_tags不会被调用,也不会打印标签列表。第二遍打印该函数的结果,但是重复结果两次。

奇怪的是,它的前后矛盾。我将运行该脚本,并且在第一次尝试按1时,有时会从函数get_all_tags

中获得结果。当所有功能都经过单独测试时,它可以很好地工作。 while循环似乎导致内部出现异常情况,不确定如何解决。
$options=0
$iteration=0

while($options -ne 5)
{

$options = read-host -prompt "
Press
 1. to search for all the tags running on Azure Virtual Machine(s)
 2. to search for resource using tag name
 3. to search for specific resource
 4. to search for value of a tag name
 5. to exit
"
if ($options -eq 1){

    write-host "option 1 selected"
    get_all_tags
     #give option to exit or go back to the main menu
     $iteration++
     $iteration

}

elseif ($options -eq 2){

    get_resource_with_tag_name $inputTagName
    #give option to exit or go back to the main menu

}

elseif ($options -eq 3){

    get_resource_tags $inputResource
    #give option to exit or go back to the main menu

}

elseif ($options -eq 4){

    get_keys_value $inputTagKey
    #give option to exit or go back to the main menu

} 
}


Function get_resource_tags($resourceName)
{
    $inputResource = read-host -prompt 'Write a resource name you wish to search with all associated tags'
    return (get-azresource -ResourceGroupName $inputResource).Tags


}

Function get_resource_with_tag_name($tagName){
    $inputTagName = read-host -prompt 'Write a tag name you wish to search associated with resource'

    return (get-AzResource -TagName $inputTagName).Name 

}


Function get_all_tags{


  return get-aztag

}


Function get_keys_value($tagKeyName){
   $inputTagKey = read-host -prompt 'Write a tag name'

   $result = (get-aztag -Detailed $inputTagKey).Values 
   $final = $result | ft  -property @{n="Tag Value";e={$_.name}},count

   return $final
}

您可以看到,脚本运行后,我有5个选项可供选择。当我按1时,将打印选择的选项1“,但不会调用get_all_tags函数,也不打印标签列表。...

azure powershell while-loop scripting azure-virtual-machine
2个回答
3
投票

PowerShell是一种解释器语言,而不是编译器语言。因此,函数的位置会干扰您的结果。应该先声明它们,然后再调用它们。


0
投票

感谢@sid做出回应并指出差异。尽管进行了更改,但选项1和3仍然执行相同操作,而选项2和4始终会打印出结果。

© www.soinside.com 2019 - 2024. All rights reserved.