Powershell命名为管道安全?

时间:2013-10-17 17:15:31

标签: powershell named-pipes

如何设置Powershell命名管道以供本地计算机上的所有用户使用?

我正在编写一个小的Powershell脚本,我需要能够让本地计算机上的任何用户能够写入将被此脚本使用的命名管道。

我可以通过以下方式设置管道:

$pipe=new-object System.IO.Pipes.NamedPipeServerStream("\\.\pipe\mypipe")
$pipe.WaitForConnection()  
$sr = new-object System.IO.StreamReader($pipe)
while (($cmd= $sr.ReadLine()) -ne 'exit') 
....

我不确定如何将System.IO.Pipes.PipeSecurity与此结合使用。

编辑:如果重要的话,我正在使用PS v2。

EDIT2:

我在创建命名管道安全定义方面取得了一些进展。仍然不确定如何绑定它。

$PipeSecurity = new-object System.IO.Pipes.PipeSecurity
$AccessRule = New-Object System.IO.Pipes.PipeAccessRule( "Users", "FullControl", "Allow" )
$PipeSecurity.AddAccessRule($AccessRule)
$pipe=new-object System.IO.Pipes.NamedPipeServerStream("\\.\pipe\mypipe");
$pipe.SetAccessControl( $PipeSecurity ) 

1 个答案:

答案 0 :(得分:1)

您需要使用正确的构造函数,之后无法设置该属性。这样就可以了:

$PipeSecurity = new-object System.IO.Pipes.PipeSecurity
$AccessRule = New-Object System.IO.Pipes.PipeAccessRule( "Users", "FullControl", "Allow" )
$PipeSecurity.AddAccessRule($AccessRule)
$pipe=new-object System.IO.Pipes.NamedPipeServerStream("p","In",100, "Byte", "Asynchronous", 32768, 32768, $PipeSecurity);