3

如何设置 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。

编辑2:

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

$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 ) 
4

1 回答 1

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);
于 2013-10-25T01:07:31.973 回答