2017-08-30 50 views
2

从PS使用“0”参数调用“需求”的异常:“请求主体许可失败。”

以下块
$myAppDomain = [System.AppDomain]::CurrentDomain 
$myPrincipal = [System.Security.Principal.PrincipalPolicy]::WindowsPrincipal 
$myAppDomain.SetPrincipalPolicy($myPrincipal) 
$myPrincipalPermission = New-Object -TypeName System.Security.Permissions.PrincipalPermission -ArgumentList $null, "Administrators" 
$myPrincipalPermission.Demand() 

我得到了以下异常。

 
Exception calling "Demand" with "0" argument(s): "Request for principal 
permission failed." 
At line:1 char:30 
+ $myPrincipalPermission.Demand <<<<() 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : DotNetMethodException 

PowerShell中的版本是

 
$PSVersionTable 
Name       Value 
----       ----- 
CLRVersion      2.0.50727.8762 
BuildVersion     6.1.7601.17514 
PSVersion      2.0 
WSManStackVersion    2.0 
PSCompatibleVersions   {1.0, 2.0} 
SerializationVersion   1.1.0.1 
PSRemotingProtocolVersion  2.1 

我写的基础上,PrincipalPermission class documentation脚本。

+0

时髦。我可以重现此问题(并通过提供当前用户名来解决此问题),但[查看源代码,似乎没有任何解释原因](https://referencesource.microsoft.com/#mscorlib/system/security/permissions/ principalpermission.cs,461) –

+1

你想要完成什么? –

回答

0

简化版本,在登录用户显式为Windows组“用户”的成员的情况下工作。

[System.AppDomain]::CurrentDomain.SetPrincipalPolicy([System.Security.Principal.PrincipalPolicy]::WindowsPrincipal) 
$myCP = [System.Threading.Thread]::CurrentPrincipal 
$myPP = New-Object -TypeName System.Security.Permissions.PrincipalPermission -ArgumentList $myCP.Identity.Name, "Users" 
$myPP.Demand() 

如果没有则会引发SecurityException,需求成功。参考 PrincipalPermission.Demand Method() Remarks