执行 C# 交互式 powershell 脚本

2023-12-14

假设我使用 C# 执行 powershell 脚本。脚本执行的结果是请求凭据才能继续。

Example:

Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(scriptText);
... = pipeline.Invoke();
// i must enter credentials in order to continue the script execution

是否可以通过编程方式实现这种交互?


IMO 最简单的方法是使用有效凭据连接到目标计算机,然后您可以在没有任何凭据提示的情况下执行任何代码,为此,您需要创建一个PSCredential对象,它是一个用户名和一个安全字符串密码。

要将纯文本转换为 SecureString,您可以使用以下方法:

private SecureString GetSecurePassword(string password)
        {
            var securePassword = new SecureString();
            foreach (var c in password)
            {
                securePassword.AppendChar(c);
            }

            return securePassword;
        }

然后你的下一步是创建一个WSManConnectionInfo目标计算机的对象,并添加凭据,您可以再次使用此方法:

WSManConnectionInfo GetConnectionInfo(string computerName)
        {
            PSCredential creds = new PSCredential("UserName",
              GetSecurePassword("Password"));

            Uri remoteComputerUri = new Uri(string.Format("http://{0}:5985/wsman", computerName));
            WSManConnectionInfo connection = new WSManConnectionInfo(remoteComputerUri,
                "http://schemas.microsoft.com/powershell/Microsoft.PowerShell",
                creds);

            return connection;
        }

最后,连接到目标计算机并创建一个 Runspace:

WSManConnectionInfo connectionInfo = GetConnectionInfo("computerName");
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);

回到你的代码:

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

执行 C# 交互式 powershell 脚本 的相关文章

随机推荐

  • 为什么 padding: 0 隐藏我的无序列表项目符号?

    我正在更新一个旧网站 其中有很多无序列表 每当 padding 设置为 0 时 无序列表的显示 标记 就会消失 问题是 CSS 设置 padding 0 margin 0 我现在正在删除它 每个克里斯 科伊尔的笔记 是 不再酷 为什么pad
  • 放大/缩小鼠标点?

    As seen in the pictures 我在 QScrollArea 中有 QWidget QWidget 充 当细胞图像和一些基于矢量的轮廓数据的渲染小部件 用户可以执行放大 缩小操作 简单地发生的是 它改变了 QPainters
  • “{Binding Path=.}”和“{Binding}”真的相等吗

    在我的 WPF 项目中 我有一个列表框 用于显示来自List
  • 无法移出 Rust 中借用的内容

    pub struct Character name String hp i32 level i32 xp i32 xp needed i32 gold i32 impl Character pub fn new name String gt
  • 使用 Azure Powershell 或 Azure CLI 创建 Log Analytics 警报

    我正在尝试在 azure 门户的 LogAnlytics 中创建警报 需要为 5 个数据库创建 6 个警报 因此必须手动创建 30 个警报 并且非常耗时 因此需要一种自动化方法 尝试通过创建使用 Azure PowerShell 创建警报
  • 在批处理作业中创建文件名作为时间戳

    我们有一个每天运行的批处理作业 并将文件复制到拾取文件夹 我还想获取该文件的副本并将其放入具有文件名的存档文件夹中 yyyy MM dd log 在 Windows 批处理作业中执行此操作的最简单方法是什么 我基本上是在寻找与此 Unix
  • 检测 HTML5 Video 元素是否正在播放 [重复]

    这个问题在这里已经有答案了 我浏览了几个问题来了解 HTML5 元素是否正在播放 但找不到答案 我查看了 W3 文档 它有一个名为 playing 的事件 但我似乎无法让它工作 这是我当前的代码 var stream document ge
  • Mockito 通过,但代码覆盖率仍然较低

    package com fitaxis test import java sql SQLException import org junit Assert import org junit Test import org mockito M
  • 在 Vue 项目中创建和操作 SVG

    我是 Vue js 新手 需要创建一个 Vue 组件来创建和操作 SVG 根据我的理解 在 Vue 组件中使用 JQuery 并不是最好的选择 不过我愿意 因为选择元素非常简单 这是我的 Vue 组件 但我不确定如何使其发挥作用 注意 SV
  • 如何通过jquery将点击更改为鼠标悬停或悬停?

    我想在鼠标悬停或悬停时显示日期 现在是 onclick 我已经使用工具提示来显示数据 但我想在鼠标悬停时显示数据 我尝试了很多但没有成功 任何机构都可以提供帮助 我们将不胜感激 提前致谢 这是我的代码 它想在单击鼠标悬停 悬停时进行更改
  • 按修改日期排序该数组?

    我有一个 php 文件 它在我的用户目录中创建一个包含所有内容的数组 然后该数组被发送回 iPhone 我的 php 创建的数组按字母顺序排序 我希望它按文件创建日期排序 这是我的 php 文件的样子 我该怎么做 谢谢 Using usor
  • 将泛型集合 List<> 绑定到属性网格

    我尝试绑定通用集合列表联系方式 to propGrid但输出与我的预期不符 我想列表联系方式显示为ListBox in propGrid 我该怎么做 谢谢 class Contact public string Name get set p
  • 如何获取执行查询的表名? (蟒蛇/sqlite)

    我正在运行一个简单的查询并将结果转换为 json 我想动态地执行此操作 以便我可以使用一个函数来处理所有查询 query INSERT INTO Tests name start end VALUES params name start e
  • 如何使用项目的哈希值检查 HashSet 是否包含该项目?

    我想检查 HashSet 是否包含特定元素 我已经有了int元素的哈希码 但不是对元素本身的引用 是否可以在不迭代整个集合的情况下做到这一点 没有为什么 哈希码与对象之间没有一对一的映射 鸽子原理 Net HashSet Dictionar
  • 嵌套并行和折叠 for 循环之间有区别吗?

    我知道启用嵌套并行性将允许嵌套 omp 并行 for 循环也被并行化 但我在嵌套的 for 循环 for 内部 中使用塌陷 2 有区别吗 为什么或者为什么不 假设最好的情况 循环索引之间没有依赖性并且其他条件相同 是的 有很大的区别 使用c
  • Asp.net Core azure Web 应用程序日志记录

    我有一个 asp net core 部署到 azure 我正在尝试使用以下命令配置日志记录到我的应用程序Microsoft Extentions Logging接口 目前我的应用程序正在将日志写入网络应用程序存储中的日志文件文件夹 这似乎是
  • 如何为 React 路由设置 apache 服务器?

    我的 React 应用程序在本地开发服务器上运行良好 但当我将生产就绪文件直接转储到 Apache 的 htdocs 目录时 它不起作用 这是我所拥有的 var www index html var www bundle js 我有 Doc
  • 如何使用 Zend 2 保存处理程序 DbTableGateway?

    The Zend Session 保存处理程序本教程提供了 DbTableGateway 的示例 其中使用未定义的 adapter 变量创建 TableGateway 我想使用处理程序来绑定会话管理器 来自教程的上一页 到我的数据库中的会话
  • 默认情况下使用多个字段进行多重搜索

    所以 有一个 jqGrid 带有声明 如下所示 grid jqGrid bunch of stuff searchGrid multipleSearch true 这很好 当我单击 搜索 按钮时 它会为我带来模式形式 我猜是第一列和 sop
  • 执行 C# 交互式 powershell 脚本

    假设我使用 C 执行 powershell 脚本 脚本执行的结果是请求凭据才能继续 Example Pipeline pipeline runspace CreatePipeline pipeline Commands AddScript