powershell - Powershell中如何定义返回进程对象的方法的返回类型
问题描述
$proc = Start-Process -FilePath '.\ScheduledLogoff.bat' -ArgumentList $ManualAuthTimeout_min -PassThru -WindowStyle Hidden
上面的命令行返回 cmdlet 启动的进程的进程对象。
我需要创建一个MyClass
可能返回进程对象的方法,但我不知道如何为我的方法定义返回类型。我该如何定义它?
只是为了上下文化:我的目标是启动第二个进程,然后通过管道(xml)在第三个进程中获取第二个进程的进程对象,该管道共享一个对象,该对象具有这个进程对象作为属性和更多其他一些属性。
class MyClass
{
Hidden [???]$batProcessObj
[???]get_batProcessObj()
{
$this.batProcessObj = get_from_xml
return $this.batProcessObj
}
[void]send_batProcessObj($value)
{
$this.batProcessObj = $value
update_xml($this)
}
}
过程1:
$myObj = New-Object MyClass
#Creating process 2:
$proc = Start-Process -FilePath '.\ScheduledLogoff.bat' -ArgumentList $ManualAuthTimeout_min -PassThru -WindowStyle Hidden
$myObj.send_batProcessObj($proc)
过程3:
$myObj = New-Object MyClass
$Process2 = $myObj.get_batProcessObj()
解决方案
除非我误解了您的要求,否则使用参数时的结果Start-Process
是 a 。[System.Diagnostics.Process]
-PassThru
如果您指定 PassThru 参数,此 cmdlet 将生成 System.Diagnostics.Process 对象。否则,此 cmdlet 不会返回任何输出。
您可以根据上面的代码运行以下命令来检查这一点。
$proc.GetType().FullName
你的返回类型就是这样。
[System.Diagnostics.Process]get_batProcessObj()
{
$this.batProcessObj = get_from_xml
return $this.batProcessObj
}
推荐阅读
- selenium - 我不能运行超过 117 个网址
- asp.net - 我想从 json 列表中返回 id。但它给出了一个错误
- android - Android (Java) 上的 Firebase Firestore:这里有多少和什么样的请求?
- python - 迭代时将函数值附加到列表
- python - SharePlum 下载文件 - 文件是字符串?
- python - Python 正则表达式:带有 re.ASCII 的模式仍然可以匹配 unicode 字符?
- javascript - 反应中的动态提取功能
- elasticsearch - 弹性搜索中的嵌套查询
- python - 对于每个组,如果最近一年具有特定值,我如何替换前几年的值?
- svelte - 如何在路线之外的 Sapper 项目中使用 fetch?