【问题标题】:How to store local administrator username and password in powershell script如何在PowerShell脚本中存储本地管理员用户名和密码
【发布时间】:2019-08-20 16:25:46
【问题描述】:

我正在创建一个 PowerShell 脚本,用户可以运行该脚本来编辑注册表中的条目。我的问题是我无法弄清楚如何将本地管理员用户名和密码存储在同一个脚本中,以便用户只需双击脚本并运行它,而无需手动输入用户名和密码。

这是我的代码:

$username = "testpc\administrator"

$pasword = get-content C:\Users\test1\documents\testpassword.txt

$credential = new-object -typename system.management.automation.pscredential-argumentlist $username, $password


这根本不起作用。请让我知道我在这里做错了什么。

【问题讨论】:

标签: powershell


【解决方案1】:

通常我会要求一个错误,但在这种情况下,我会建议不同,只是因为你的方法是不可接受的。

  1. 不要在脚本中存储未加密的密码。从不。
  2. 不要在脚本中存储加密的密码,这些密码是为了让其他人阅读,尤其是权限较低的用户。从不!
  3. 去吧,想办法解决你的问题。永远!

在这种情况下,我看到了两个具有给定信息的解决方案:

  1. 更改需要用户更改的注册表项的 ACL
  2. 创建一个以 SYSTEM 身份运行的计划任务。确保用户无法编辑脚本。

【讨论】:

    【解决方案2】:

    其实@vrdse 是对的。 您可以使用 KEY 作为参数创建脚本,并且:

    1. 使用您的用户凭据创建计划作业并将脚本添加为任务。

    2. 授予用户执行作业的权限,但不能编辑或删除

    3. 向用户提供计划作业(或运行脚本)的快捷方式,并制作一个操作文档向他/她展示如何使用该参数。

    我使用明文密码作为临时测试材料,以确保用户不能使用我的脚本(因此它与您的操作完全相反)。

    您可以在执行期间捕获凭证:

    $cred = get-gredential -message 'This script needs a real admin user'
    Enter-PSSession -Credential $cred -ComputerName 127.0.0.127
    

    您可以建立一个凭证(不要存储特权用户数据):

    $user = 'SuchAGreatDomainName\IAmLowPrivilegedUserName'
    $Password = 'SuperSecretPassEverybodyKnows'
    $secpassword = ConvertTo-SecureString $Password -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential($user, $secpassword)
    Invoke-RestMethod -Uri $Uri -Credential $Credential
    

    【讨论】:

    • "-message" 在旧版本的 powershell 中不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多