Rob*_*Rob 0 powershell runspace
很抱歉之前是工资。我会再尝试:
情况太复杂了,无法解释,但基本上问题是:
我通过让一个脚本在另一个脚本监视的目录中创建一个包含字符串的文件来完成它。所以当它出现时,另一个脚本读取信息。它有效,但感觉“脏”。:)
我想知道是否有一种“最佳实践”——在脚本之间传递信息的方式,或者至少是一种更优雅的方式。
谢谢。
有几种方法可以使同一主机上的两个连续运行的进程相互通信,例如命名管道:
# named pipe - server
$name = 'foo'
$namedPipe = New-Object IO.Pipes.NamedPipeServerStream($name, 'Out')
$namedPipe.WaitForConnection()
$script:writer = New-Object IO.StreamWriter($namedPipe)
$writer.AutoFlush = $true
$writer.WriteLine('something')
$writer.Dispose()
$namedPipe.Dispose()
Run Code Online (Sandbox Code Playgroud)
# named pipe - client
$name = 'foo'
$namedPipe = New-Object IO.Pipes.NamedPipeClientStream('.', $name, 'In')
$namedPipe.Connect()
$script:reader = New-Object IO.StreamReader($namedPipe)
$reader.ReadLine()
$reader.Dispose()
$namedPipe.Dispose()
Run Code Online (Sandbox Code Playgroud)
或 TCP 套接字:
# TCP socket - server
$addr = [ipaddress]'127.0.0.1'
$port = 1234
$endpoint = New-Object Net.IPEndPoint ($addr, $port)
$server = New-Object Net.Sockets.TcpListener $endpoint
$server.Start()
$cn = $server.AcceptTcpClient()
$stream = $cn.GetStream()
$writer = New-Object IO.StreamWriter($stream)
$writer.WriteLine('something')
$writer.Dispose()
$server.Stop()
Run Code Online (Sandbox Code Playgroud)
# TCP socket - client
$server = '127.0.0.1'
$port = 1234
$client = New-Object Net.Sockets.TcpClient
$client.Connect($server, $port)
$stream = $client.GetStream()
$reader = New-Object IO.StreamReader($stream)
$reader.ReadLine()
$reader.Dispose()
$client.Dispose()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1490 次 |
| 最近记录: |