gpt4 book ai didi

.net - 获取 AzureRmResource : A parameter cannot be found that matches parameter name 'Tag'

转载 作者:行者123 更新时间:2023-12-03 01:04:54 27 4
gpt4 key购买 nike

所以我完全被这个问题难住了。

问题

我有一个 powershell 脚本(一个 .ps1 文件),它有时会执行以下操作:

Import-Module AzureRM

Login-AzureRmAccount -Credential $azureCredentials | out-null
Select-AzureRmSubscription -SubscriptionId $azureSubscriptionId -TenantId $azureTenantId | out-null

Write-Host (ConvertTo-Json((Get-AzureRmResource -Tag @{ "env"="dev"}) | Select Name, Location))

我通过执行以下操作在 .NET 控制台应用程序中运行脚本:

Dim process = New Process() With {.StartInfo = New ProcessStartInfo With {
.FileName = "powershell.exe",
.Arguments = "-ExecutionPolicy ByPass -file """ & _powershellScriptsPath & "\get-webapps.ps1",
.UseShellExecute = False,
.RedirectStandardOutput = True,
.RedirectStandardError = True
}}

该脚本在我的笔记本电脑上运行良好,无论是从 ISE 还是从控制台应用程序运行。

然后在我的桌面上,它在 ISE 中工作正常,但在控制台应用程序中失败,并显示以下错误消息:

Get-AzureRmResource : A parameter cannot be found that matches parameter name 'Tag'.

我无法弄清楚这一点。

一些见解

我的 $PSVersionTable 在两台计算机上是相同的:

Name                           Value                                                                                                                                                                                                                                                
---- -----
PSVersion 5.1.17134.165
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.165
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

我的笔记本电脑有 AzureRm 模块 6.1.0 版本:

PS C:\WINDOWS\system32> Get-InstalledModule -Name AzureRm

Version Name Repository Description
------- ---- ---------- -----------
6.1.0 AzureRM PSGallery Azure Resource Manager Module

虽然我的桌面版本为 6.5.0:

PS C:\WINDOWS\system32> Get-InstalledModule -Name AzureRm

Version Name Repository Description
------- ---- ---------- -----------
6.5.0 AzureRM PSGallery Azure Resource Manager Module

所以这里存在版本差异,但 -Tag 确实存在于 6.1.0 中,因为在 Powershell ISE 中该脚本确实可以工作。而且它必须使用 6.1.0,因为它似乎是唯一安装的版本(?)。

此外,控制台应用程序在两个 Visual Studio(笔记本电脑/台式机)中运行相同的配置(至少据我所知)。值得注意的是,它被编译为 AnyCPU,并在两台计算机上以 32 位运行。

最佳答案

查看this似乎 -tag 缺少 6.0.0 之前版本的 AzureRm。这是问题的根本原因:

get-command get-azurermresource -full

解决方法是升级该版本。您可以通过执行以下操作找到模块所在的位置:

get-module azurerm  | select modulebase

ps。另一种解决方法是使用 odata 查询:

Get-AzureRmResource -ODataQuery "`$filter=tagname eq 'something'"

关于.net - 获取 AzureRmResource : A parameter cannot be found that matches parameter name 'Tag' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51498836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com