如何在PowerShell脚本中完全自动化管理员凭据的传递?

时间:2016-05-27 02:57:50

标签: windows powershell scripting automation credentials

我编写了一个小的.ps1脚本,可以自动执行简单命令,以尝试修复最终用户计算机上默认打印机的任何问题。如何在此脚本中传递凭据,以便始终以提升的权限运行?

net stop spooler

Remove-Item C:\Windows\System32\spool\PRINTERS\* -Force

net start spooler

这将用于许多不同的域,但管理员用户名/密码在所有计算机上都是一致的。我看到了一个类似的问题here,但显示的方法要么将密码保存为.xml,然后调用它(这会使密码对非管理员可见),或者该方法根本不起作用我;也许这是我的执行?通常我不习惯将管理员凭据编写为纯文本,但脚本实际上并未保存在最终用户的计算机上,只能通过RMM在后台执行。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我发现以下文章对如何保护凭据和使用存储在文本文件中的凭据非常有用:

http://www.adminarsenal.com/admin-arsenal-blog/secure-password-with-powershell-encrypting-credentials-part-1/

基本上你会做以下事情:

<password> | ConverTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File <filename>.txt

然后,您将拥有一个安全的字符串文件,用于存储您的密码以便在脚本中使用。您还可以使用以下命令执行相同的操作,而无需使用纯文本密码:

(Get-Credentail).Password | ConvertFrom-SecureString | Out-File <filename>.txt

然后,您可以将以下代码添加到您的脚本中以使用存储的密码,我建议只有管理员才能访问工作站的共享位置,并使用它来运行上述脚本:

$credentials = Get-Content <filename>.txt | ConvertTo-SecureString

最后一步是创建一个使用信誉的对象:

$adminCredentails = New-Object -TypeName System.Management.Automation.PSCredentail -ArgumentList <username>, (Get-Content <filename>.txt | ConvertTo-SecureString)

我会想你如何在脚本中使用凭据。