【问题标题】:Powershell in c# and permissionsC# 中的 Powershell 和权限
【发布时间】:2012-09-26 15:54:53
【问题描述】:

我正在从作为 SYSTEM 帐户运行的 Windows 服务运行 PowerShell 脚本。为了增加权限,我让用户选择一个用户,我稍后会使用 LogonUser 方法模拟整个线程。

这样我可以访问网络驱动器,当我尝试在 PowerShell 中打印当前用户时也可以。

但我有一个案例,它不起作用:

一个示例是用户尝试加载 Exchange 管理单元并运行 cmdlet:Get-MailboxPermission

然后他得到错误:“Get-MailboxPermission”一词未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。术语“Get-MailboxPermission”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

我猜这是权限问题,我想知道是否还有其他需要更改为 RunSpace 等以获得增加的权限?还有其他想法吗?

【问题讨论】:

    标签: powershell windows-services localsystem


    【解决方案1】:

    哪个 PowerShell 版本?

    您似乎没有添加交换管理单元。尝试之前运行此命令:

    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
    

    或者,通过代码,在运行空间初始化中,使用以下代码:

    RunspaceConfiguration rsConfig = RunspaceConfiguration.Create();
    PSSnapInException snapInException = null;
    PSSnapInInfo info = rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException);
    Runspace myRunSpace = RunspaceFactory.CreateRunspace(rsConfig);
    myRunSpace.Open(rsConfig);
    

    阅读本文了解更多信息: http://msdn.microsoft.com/en-us/library/exchange/bb332449(v=exchg.80).aspx

    【讨论】:

    • 脚本在手动运行时有效 - 但在服务上下文中加载时无效(即使它是模拟的)。
    • 您是否尝试过运行我在其他命令之前编写的命令?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2019-03-13
    • 2014-06-15
    • 2017-08-21
    • 2016-11-02
    • 1970-01-01
    相关资源
    最近更新 更多