Server-side
PS C:\> if ($PSVersionTable.PSVersion.Major -eq 2) { Add-Type -AssemblyName System.Core }
PS C:\> $pipe = New-Object System.IO.Pipes.NamedPipeServerStream("\\.\pipe\MyPipeName")
PS C:\> $pipe.WaitConnection()
PS C:\> $writer = New-Object System.IO.BinaryWriter($pipe)
PS C:\> [Byte[]]$data = 0x01, 0x02, 0x03, 0x04
PS C:\> $writer.Write($data)
PS C:\> $writer.Dispose() # Disconnect pipe
PS C:\>
Client-side
PS C:\> if ($PSVersionTable.PSVersion.Major -eq 2) { Add-Type -AssemblyName System.Core }
PS C:\> $pipe = New-Object IO.Pipes.NamedPipeClientStream('.', 'MyPipeName', [IO.Pipes.PipeDirection]::Out)
PS C:\> $pipe.Connect()
PS C:\> $reader = New-Object System.IO.BinaryReader($pipe)
PS C:\> $data = $reader.ReadBytes(4)
PS C:\> $data
1
2
3
4
PS C:\> $reader.Dispose() # Disconnect pipe
PS C:\>
Remark
.NET 3.5 이상 지원
References
- https://msdn.microsoft.com/en-us/library/system.io.pipes.namedpipeserverstream(v=vs.110).aspx
- https://msdn.microsoft.com/en-us/library/system.io.pipes.namedpipeclientstream(v=vs.110).aspx
- https://gbegerow.wordpress.com/2012/04/09/interprocess-communication-in-powershell/
- https://rkeithhill.wordpress.com/2014/11/01/windows-powershell-and-named-pipes/