如何将powershell get命令的输出传递给变量并返回输出而不使用@ {output}

时间:2017-08-17 22:03:35

标签: powershell azure azure-powershell

代码如下

var mySchema = new Schema({
    _id: String,
    // Other fields
});

我需要将$rgName = "my-rg" $nameprefix = "vmtest" ##(following statement creates storage account with nameprefix followed by randomly generated string) New-AzureRmResourceGroupDeployment -ResourceGroupName $rgName -TemplateFile "C:\YourpathtoTemplates\Template.json" -storageNamePrefix $nameprefix -storageSKU Standard_LRS ##Here is the problem statement $tsaname = Get-AzureRmStorageAccount -ResourceGroupName $rgname | select StorageAccountName | Where-Object {$_.StorageAccountName -like "$nameprefix*"} 的值传递给另一个命令,而是将其$tsaname提取,这会导致错误

我们当前的解决方法是使用split

来传递值
@{StorageAccountName=vmtest4rncl5tyt798}

返回所需的值$tsaname1 = ($tsaname -split "(?=$nameprefix)"| Select -last 1).Trim("}")

有更好的方法吗?

使用以下语句来帮助排除故障

vmtest4rncl5tyt798

1 个答案:

答案 0 :(得分:0)

您需要展开属性StorageAccountName:

$tsaname = Get-AzureRmStorageAccount -ResourceGroupName $rgname `
| Where-Object -Property StorageAccountName -like -Value "$nameprefix*" `
| Select-Object -ExpandProperty StorageAccountName

这将返回String而不是具有属性的对象。

或者您也可以使用$tsaname.StorageAccountName