首页 > 解决方案 > 以管理员身份运行的 Powershell 脚本包装器

问题描述

我正在编写一个脚本以通过组策略进行部署。该脚本删除了一些注册表设置,以解决我们在构建 Windows 时遇到的问题。该脚本需要以管理员身份运行,因为密钥存在于需要管理员权限才能删除的配置单元中。

因为 GP 以登录用户身份运行 powershell 脚本,所以我正在考虑创建一个包装器,它将读取本地用户帐户的加密密码,然后使用它运行脚本。

我的脚本能够读取凭证,但在运行 start-process 命令时出现错误。如果我尝试引用脚本,它将给出路径不存在的错误,即使您可以使用 cat 转储内容。

然后我尝试将它读入一个变量并使用 -command 参数运行 powershell。如果我这样做,我会得到一个错误。

“Start-Process:由于错误而无法运行此命令:参数不正确”

我知道我需要将代码括在大括号中,但我不确定这是如何完成的,因为将它们连接到字符串不起作用。

if($connected) {
    $Encrypted = Get-Content <PATH TO PASSWORD FILE>
    $pass = ConvertTo-SecureString -String $Encrypted -Key (1..16)
    $user = <MY ADMIN ACCOUNT>
    $Credential = New-Object System.Management.Automation.PSCredential $user, $pass

    echo $(pwd)
    echo $(cat <PATH TO SCRIPT>)
    $code = $( cat <PATH TO SCRIPT> )
    #Invoke-Command -ScriptBlock {$code} -Credential $Credential
    #Start-Process powershell.exe <PATH TO SCRIPT> -Credential $Credential 
    Start-Process powershell.exe -ArgumentList "-command $code" -Credential $Credential 
}

我只需要一种在我的第二个脚本中执行代码的方法,但我无法弄清楚如何执行此操作,因为它的行为不符合预期。抱歉,我确信我遗漏了一些明显的东西。

标签: powershellgroup-policy

解决方案


推荐阅读