2017-07-31 1 views
0
Function ABC { 
    [Object] $Connection = ((New-Object -TypeName System.IO.Ports.SerialPort -ArgumentList COM1, 11200, None, 8, one) 
    $Connection.open() 
} 

Maintenant, je veux utiliser $Connection à l'extérieur quand j'en ai besoin. Comment puis-je accéder commePort série Powershell Portée variable

$Connection.write("`r") # Calling from outside 
$Connection.Readexisting("`r") # Calling from outside 

Répondre

0

Retour de l'objet $connection de la fonction:

function New-COM1Connection 
{ 
    $Connection = New-Object -TypeName System.IO.Ports.SerialPort -ArgumentList COM1, 11200, None, 8, One 
    $Connection.Open() 
    return $Connection 
} 

Maintenant, vous pouvez l'utiliser comme:

$myConnection = New-COM1Connection 
$myConnection.Write("`r") 
0

Le problème que vous rencontrez est la portée. Si vous déclarez une variable dans une fonction, la variable n'a que la portée de cette fonction et disparaît une fois la fonction exécutée. Ce que vous aurez besoin de faire est de déclarer $connection en dehors de la fonction, de la passer dans la fonction, de la modifier ici, et d'avoir toujours accès à la variable en dehors de la fonction.

Exemple:

$connection 
function MyFunction 
{ 
    param([Parameter(Mandatory=$true)][AllowNull()]$connection) 
    # do work here 
} 

L'autre alternative est de déclarer la valeur de retour d'une fonction comme variable

$myConnection = MyFunction

Ensuite, vous pouvez utiliser return dans la fonction pour renvoyer la variable.

+0

merci beaucoup, à la fois la réponse fonctionne pour moi. mais son long chemin à parcourir maintenant. – Vimal2311