Problèmes de retourner à la table de hachage
Donc, si j'ai le code suivant:
function DoSomething {
$site = "Something"
$app = "else"
$app
return @{"site" = $($site); "app" = $($app)}
}
$siteInfo = DoSomething
$siteInfo["site"]
Pourquoi ne pas $siteInfo["site"] retour "quelque Chose"?
Je peux état....
$siteInfo
Et il sera de retour
else
Key: site
Value: Something
Name: site
Key: app
Value: else
Name: app
Ce qui me manque?
$siteInfo["site"]
ne retourSomething
pour moi.- pour moi aussi, powershell version?
- Ok, j'ai quelques infos. J'ai ajouté un simple appel sur une variable ($app) ci-dessus dans mon code de fonction. Ce qui était survenant était que la valeur de $app et de la table de hachage a été renvoyé à la variable qui a appelé la fonction. Donc, si j'ai fait une ($siteInfo | fl), ce serait montrer à la fois "autre chose" et puis les deux clés/valeurs. Pourquoi est-ce?
- Il semble que, depuis que vous avez
$app
tout seul sur une ligne que vous souhaitez imprimer quelque chose à l'écran dans la fonction elle-même, mais pas de retour à l'appelant. Vous pouvez faire cela en utilisant laOut-Host
ouWrite-Host
applets de commande qui permet d'afficher l'objet, mais de ne pas s'engager pour le pipeline. Par exemple:Write-Host $app
ou$app | Out-Host
.
Vous devez vous connecter pour publier un commentaire.
Dans PowerShell, retour des fonctions de tout et de toutes les valeurs retournées par chaque ligne dans la fonction; explicite
return
déclaration n'est pas nécessaire.La
String.IndexOf()
méthode renvoie une valeur de type entier, dans cet exemple,DoSomething
renvoie " 2 " et la table de hachage en tant que tableau d'objets comme on le voit avec.GetType()
.L'exemple suivant montre 3 façons de bloquer les indésirables de sortie:
Voici un exemple de la façon d'envelopper plusieurs instructions dans un ScriptBlock pour capturer indésirables de sortie:
$null = .{ <# function contents #> }, but I would rather use
Hors Null`, et la comme lorsque nécessaire.$()
sont utilisés pour$site
et$app
?@Rynant TRÈS utile de poster, merci de fournir des exemples sur le masquage de la fonction de sortie!
Ma solution proposée: