Как я могу использовать функцию powershell в нескольких сценариях? - PullRequest
1 голос
/ 17 ноября 2010

Моя C # -программа должна быть при открытии выполнить функцию powershell, выглядит так:

function RunIE 
{    
    $a = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -name ProgramFilesDir
    $path = $a.ProgramFilesDir + "\Internet Explorer\iexplore.exe"

    & $path "www.heise.de" -extoff

    Start-Sleep 6

    $shell = (New-Object -COM Shell.Application)
    $ie = @($shell.Application.Windows()) | Where-Object { $_.LocationUrl -like "*heise*" }

    Write-Output $ie 
} 

$ScriptLog.Invoke([log4net.Core.Level]::Debug, "Funktionsdurchlauf durchgeführt") 

Журнал в конце будет записан в моем лог-файле.(Так что я думаю, что это работает.)

Во время выполнения C # -программы должен выполняться другой скрипт, например:

    ...    

    $ie = RunIE  
    #here I get a mistake: "The term 'RunIE' is not recognized as the name of a 
    #cmdlet, function, script file, or operable program. Check the spelling of the 
    #name, or if a path was included, verify that the path is correct and try again."

    $ie.Navigate2($path)
    Start-Sleep 5

    ...

Как я могу использовать свою функцию в других скриптах, безновый / второй вызов?(Я думаю, что решение должно быть создано в powershell.)

спасибо.

1 Ответ

2 голосов
/ 17 ноября 2010

Вам нужно поставить точку в сценарии, который содержит функции и переменные области действия сценария, которые вы хотите использовать в своем сценарии.Например, если IEUtils.ps1 содержал вашу функцию RunIE, вы бы поставили ее исходный текст в основной скрипт следующим образом:

. C:\Temp\IEUtils.ps1
$ie = RunIE

Это предполагает, что IEUtils.ps1 в C: \ Temp.Замените соответствующий каталог по мере необходимости.Если он находится в том же каталоге, что и ваш основной скрипт, используйте:

$ScriptPath = $MyInvocation.MyCommand.Path
$ScriptDir  = Split-Path -parent $ScriptPath
. $ScriptDir\IEUtils.ps1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...