从 C# 运行 Powershell 会出现错误:“此系统上禁用运行脚本”

2024-01-18

在我的 C# 应用程序中,我尝试创建一个RunSpace调用一些 Powershell 脚本。然而,当它到达实际创建它的代码时,它会失败并出现以下错误:

var implementedHost = new implementedPSHost();
using (var rs = RunspaceFactory.CreateRunspace(customPSHost))
{

cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.At line:1 char:3+ . .\Scripts\loadFunctions.ps1+

正如其他地方所建议的,我运行了一个 Powershell 窗口并执行Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted但这没有帮助。错误仍然发生。有谁知道如何解决这个问题?


尝试运行你的Set-ExecutionPolicy -Scope CurrentUser进入运行空间,就像这样。

首先,将此用户的 ExecutionPolicy 设置为“受限”,当我运行此代码时,我看到以下错误:

RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();

            using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
            {
                runspace.Open();
                RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
                //scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted -Scope CurrentUser ");
                Pipeline pipeline = runspace.CreatePipeline();
                Command scriptCommand = new Command("C:\\temp\\test.ps1");
                Collection<CommandParameter> commandParameters = new Collection<CommandParameter>();

                pipeline.Commands.Add(scriptCommand);
                Collection<PSObject> psObjects;
                psObjects = pipeline.Invoke();
            }


 RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
 scriptInvoker.Invoke("Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted");

给我

System.Management.Automation.PSSecurityException:“无法加载文件 C:\temp\test.ps1,因为在此系统上禁用运行脚本。有关详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkID=135170 上的 about_Execution_Policies。

接下来,我重新运行它,取消注释这一行:

scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted -Scope CurrentUser ");

并且,没有错误!然而,这将更改用户的ExecutionPolicy,我认为这是不好的行为,所以我将用它来包装我的函数,并将 Users ExecutionPolicy 设置回我发现它的方式。

using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
            {
                runspace.Open();
                RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
                scriptInvoker.Invoke("$ExecutionPolicy = Get-ExecutionPolicy -Scope CurrentUser");
                scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted -Scope CurrentUser ");
                Pipeline pipeline = runspace.CreatePipeline();
                Command scriptCommand = new Command("C:\\temp\\test.ps1");
                Collection<CommandParameter> commandParameters = new Collection<CommandParameter>();

                pipeline.Commands.Add(scriptCommand);
                Collection<PSObject> psObjects;
                psObjects = pipeline.Invoke();
                scriptInvoker.Invoke("Set-ExecutionPolicy -Scope CurrentUser $ExecutionPolicy -Force");
            }

现在我们的功能可以运行并且我们不会篡改用户的系​​统设置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C# 运行 Powershell 会出现错误:“此系统上禁用运行脚本” 的相关文章

  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 我怎么知道PowerShell函数参数被省略了

    考虑这样的函数 function Test foo bar 我们可以称之为 Test foo null Test 我如何知道何时省略了 foo 以及何时为 null 如果您使用的是 Powershell V2 或更高版本 则可以使用 PSB
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良

随机推荐

  • 是什么 ?关于常规变量?

    我在一些常规代码中看到了这样的内容 trip id encodeAsHTML 使用或不使用 id 有什么区别 它检查对象是否为空 使用它 可以防止空指针异常 如果您使用它 则应该将其用于整个对象 例如 trip id otherstuff
  • Quartus初始化RAM

    我制作了一个实体 其中 quartus 成功识别 RAM 并为其实例化 RAM 宏功能 如果我可以从文件初始化 RAM 那就太好了 我找到了制作此类文件 mif 文件 的教程 现在我已经创建了该文件 我不知道如何让 quartus 初始化该
  • Django 和具有多个外键的模型

    我是 Django 的新手 到目前为止 它的功能给我留下了深刻的印象 我正在使用更复杂的模型 但无法正确使用它们 使用 Django 1 3 我尝试编写一个摘要页面 该页面将使用以下结构呈现下面的三个模型 换句话说 就是包含目的地和活动的旅
  • open_basedir 的影响和子域限制

    出于安全原因 我已将我的yiihtml 根目录下的文件夹 所以我的结构如下所示 conf httpdocs httpsdocs yii 运行该网站时 我收到错误 open basedir 限制yii php这是由index php out
  • AppBar Material UI 问题

    我对 Material UI 库还很陌生 但到目前为止我真的很喜欢它 但是 我遇到了 AppBar 组件覆盖在我的其他内容上的问题 我目前有
  • 维基百科上的汉字编码是什么?

    我在维基百科上查看中文字符的编码 但无法弄清楚它们正在使用什么 例如 的 被编码为 E7 9A 84 see here http upload wikimedia org wikipedia commons thumb a ae E7 9A
  • Maven - 检测同一依赖项的多个版本

    我刚刚经历了我的 Maven 项目的两个直接依赖项的情况 它们具有特定传递依赖项的两个不同版本 在我的特定情况下 我直接依赖于以下内容
  • 我可以将节点文本包装在 WinForms TreeView 中吗

    ASP NET TreeView 有一个 NodeWrap 属性 是否有在 WinForms TreeView 中完成相同操作的等效方法 EDIT 感谢您对其他控件的建议 不幸的是我的客户不允许使用第三方控件 这似乎不可能 您可能会寻找具有
  • CreateProcess 和奇怪的 nslookup 错误

    我有一个经常使用的 api 例程来捕获 dos 输出 最近发现了一个奇怪的错误 它似乎不允许 dns 调用 例如 nslookup 将返回 服务器无响应 错误 服务器 未知 如果您向其提供 IP 地址 Ping 将起作用 但如果它必须进行
  • Postgres-必须 to_timestamp() 忽略/不读取日期/时间字符串中间的特定字符

    我有原始文本列 其值类似于 2012 07 26T10 33 34 和 2012 07 26T10 56 16 在Java中使用Joda Time我可以通过调用轻松地将其转换为日期 从日期转换 new SimpleDateFormat yy
  • 当存在两种同名类型时,如何消除监视窗口中类型的歧义

    在监视窗口中 我试图查看TaskScheduler Current 但它向我显示以下错误 The type System Threading Tasks TaskScheduler exists in both CommonLanguage
  • 获取特定值的数组索引

    ArrayIndex Value Running total 0 6 6 1 1 7 2 6 13 3 2 15 I array index V value R Running total 例如 我需要为给定的运行总计选择适当的索引 12
  • Android 中的保留字列表

    我目前正在开发另一个 Android 应用程序的界面设计过程中 我似乎再次尝试使用资源的保留字 无论是可绘制对象还是布局 据我所知 您需要了解一组规则 不允许大写 除下划线外没有任何符号 没有数字 除了这些 如果我错了请纠正我 我think
  • 如何在 OSX Snow Leopard 10.6 上安装 perl DBD::Oracle

    我正在尝试从运行 OSX 10 6 雪豹的英特尔 Mac 连接到远程系统上的 Oracle 10 2 0 4 我尝试使用 perl CPAN 安装 DBD Oracle DBI 工作正常 但出现编译错误 有人可以提供一个易于遵循的指南吗 在
  • 通过类函数返回引用并返回 C++ 中的整个对象?

    Vector 类中的运算符重载 CVector CVector operator CVector param CVector temp temp x x param x temp y y param y return temp 并主要 CV
  • 如何在Excel和C#之间将“double”转换为“datetime”

    我有一个 C 程序 需要创建一个 excel 对象 并执行一些操作 这是我的代码的一部分 c code workSheet Cells 1 1 2012 9 20 asign 2012 9 20 to cell 1 1 in Excel d
  • 为什么 gradle lint 认为省略号字符“…”比“…”更具可读性?

    我在 string xml 中定义了一个字符串 XXX 并遇到了 gradle lint 问题 Replace with ellipsis character 8230 Explanation Ellipsis string can be
  • 在 python 中使用 grep

    有一个文件 query txt 其中包含一些关键字 短语 需要使用 grep 与其他文件进行匹配 以下代码的最后三行工作正常 但是当在 while 循环内使用相同的命令时 它会进入无限循环或其他东西 即不响应 import os f ope
  • 将 Google 云端硬盘推送通知设置为永不过期

    我已经阅读了用于推送通知的 Google Drive API 似乎有一种方法可以将通道设置为永不过期 但我找不到有关如何执行此操作的文档 我尝试将 ttl 参数设置为 0 和 null 两次 API 返回的过期时间都是从调用时间起 3600
  • 从 C# 运行 Powershell 会出现错误:“此系统上禁用运行脚本”

    在我的 C 应用程序中 我尝试创建一个RunSpace调用一些 Powershell 脚本 然而 当它到达实际创建它的代码时 它会失败并出现以下错误 var implementedHost new implementedPSHost usi