我的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中创建。)
感谢。
答案 0 :(得分:2)
您需要点源包含要在脚本中使用的函数和脚本范围变量的脚本。例如,如果IEUtils.ps1包含您的RunIE函数,那么您可以将其点源到主脚本,如下所示:
. C:\Temp\IEUtils.ps1
$ie = RunIE
这假设在C:\ Temp中的IEUtils.ps1。根据需要替换适当的目录。如果它与主脚本位于同一目录中,则使用:
$ScriptPath = $MyInvocation.MyCommand.Path
$ScriptDir = Split-Path -parent $ScriptPath
. $ScriptDir\IEUtils.ps1