【问题标题】:start powershell.exe inside a ps1-script with a predefined variable在带有预定义变量的 ps1 脚本中启动 powershell.exe
【发布时间】:2019-09-19 21:46:52
【问题描述】:

所以这是我在 stackoverflow 上的第一篇文章 :-) 嗯,... 会认为我作为“经验丰富的初学者”使用 powershell 操作,在过去 2 年中为操作系统自动化编写了一些运行良好的脚本。没有编程技能,只有一点点脚本可以让我作为系统管理员的生活更轻松。

目前我有一个棘手的问题 - 请原谅我已经在另一个线程中解决了这个问题,但没有找到解决方案。

此处代码的用途:

允许普通的 windows 用户(不是本地管理员组的成员)以管理权限执行一些脚本。

  1. 将当前用户切换为具有管理员权限的用户>>已解决。创建了一个 pscredential 对象 ($pscreds)。效果很好。
  2. 启动提升的 powershell 会话以能够执行管理任务 >> 已解决。 powershell.exe -verb RunAs bla bla。效果很好。
  3. 启动具有管理员权限的修复命名脚本 >> 已解决。

问题本身:

script-name 并不总是同一个......我想让代码使用当前运行脚本的路径和名称($Myinvocation.Mycommand.Definition)

$x = $myinvocation.MyCommand.Definition
      Start-Process powershell.exe -Credential $pscreds -ArgumentList {
          Start-Process powershell.exe -Verb RunAs -ArgumentList {
            start-process powershell.exe -ArgumentList (-file "$x")
            }
        }

如何修改-file "$x"处的变量$x取第一行定义的值的代码?

我自己找到了一种解决方法,将路径和脚本名写入临时文件,然后使用“get-content”将其读回 $x。但我不喜欢这个丑陋的解决方案,并希望以更好的方式解决这个问题。

感谢德国的帮助和问候

拉尔夫

【问题讨论】:

    标签: powershell launcher


    【解决方案1】:

    我认为,如果没有在一个脚本中处理大量 Windows 身份验证问题,我会坚持你已经在谈论的内容 - 尝试让非管理员编辑 $x 值他们有权访问的文件。然后按计划运行脚本使用管理员帐户读取文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多