2

他の PowerShell スクリプトから関数を呼び出してオブジェクトを返すにはどうすればよいですか?

メインスクリプト:

# Run function script
. C:\MySystem\Functions.ps1

RunIE

$ie.Navigate("http://www.stackoverflow.com")  
# The Object $ie is not existing

関数スクリプト:

function RunIE($ie) 
{
$ie = New-Object -ComObject InternetExplorer.Application
}
4

2 に答える 2

5

次のように、関数からオブジェクトを「出力」するだけです。

function RunIE
{ 
    $ie = New-Object -ComObject InternetExplorer.Application 
    Write-Output $ie
} 

またはより慣用的に

function RunIE 
{ 
    New-Object -ComObject InternetExplorer.Application 
} 

次に、出力をメイン スクリプトの変数に割り当てます。

$ie = RunIE
于 2010-11-16T16:55:34.807 に答える
2

キースは、あなたの問題に対する最良の解決策である答えを提供しました. とにかく、答えをより完全にするために何かを追加したいと思います。

関数が次のように定義されている場合:

function getvars
{
    $a = 10
    $b = "b"
}

次に、関数のスコープで新しい変数を作成し、そのRunIE中に何かを割り当てます。関数が完了すると、$ie変数は破棄されます。

場合によっては (私はある種のデバッグに使用します)、現在のスコープで関数を実行する必要があり、これは「ドット ソース」として知られています。Google を試してみてください。

PS> $a = 11
PS> getvars
PS> $a, $b
11

PS> $a = 11
PS> . getvars
PS> $a, $b
10
b
于 2010-11-17T09:21:10.093 に答える