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

現在我想在外需要時使用$Connection。我怎樣才能訪問像Powershell可變範圍串行端口

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

回答

0

返回從功能$connection對象:

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

現在你可以使用它像:

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

你遇到的問題是範圍。如果你在一個函數中聲明瞭一個變量,變量只包含該函數的作用域,並且一旦該函數運行就會消失。你需要做的是在函數之外聲明$connection,將它傳遞給函數,在那裏修改它,然後仍然可以訪問該函數之外的變量。

實施例:

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

另一種方法是聲明一個函數的返回值作爲變量

$myConnection = MyFunction

然後可以使用return在函數內部返回變量。

+0

千恩萬謝,都回答爲我工作。儘管現在還有很長的路要走。 – Vimal2311