2017-08-17 1 views
0
Code

comme suitComment puis-je passer la sortie d'un powershell obtenir la commande à une sortie variable et retour sans @ {sortie}

$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*"} 

Je dois passer la valeur de $tsaname dans une autre commande mais la cueillette jusqu'à @{StorageAccountName=vmtest4rncl5tyt798} qui se traduit par une erreur

Notre solution actuelle consiste à passer à la place de la valeur à l'aide de scission

$tsaname1 = ($tsaname -split "(?=$nameprefix)"| Select -last 1).Trim("}") 

qui renvoie t La valeur désirée vmtest4rncl5tyt798

Y a-t-il un meilleur moyen?

Utilisé instructions suivantes pour aider à résoudre les

write-output = $tsaname 
write-host $tsaname 
write-host $tsaname1 
+0

Avez-vous regardé ce https://stackoverflow.com/questions/10072911/store-a-cmdlets-result-value-in-a-variable-in- Powershell – Junaid

+0

Pouvez-vous me dire quelle serait la sortie de ce qui suit? (Get-AzureRmStorageAccount -ResourceGroupName $ rgname | Où-Object {$ _. StorageAccountName -comme "$ nameprefix *"}). StorageAccountName – Paolis

Répondre

0

Vous devez développer la StorageAccountName propriété:

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

Cela renverra un String au lieu d'un objet avec des propriétés.

Sinon, vous pouvez aussi utiliser $tsaname.StorageAccountName