不需要提示输入密码就可以使用PowerShell凭据

13 浏览
0 Comments

不需要提示输入密码就可以使用PowerShell凭据

我想重新启动一个属于域的远程计算机。我有一个管理员帐户,但我不知道如何从powershell中使用它。

我知道有一个Restart-Computer cmdlet,并且我可以传递凭据,但如果我的域例如为mydomain,我的用户名为myuser,我的密码为mypassword,正确的语法是什么?

我需要安排计划重新启动,这样我就不必输入密码。

admin 更改状态以发布 2023年5月24日
0
0 Comments

还有一种方法,但是...

如果您不想把密码存储在脚本文件中,请不要这样做(在脚本中存储密码并不是个好主意,但有些人只是想知道如何做)。

好的,这是警告,下面是代码:

$username = "John Doe"
$password = "ABCDEF"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr

$cred 将包含 John Doe 的凭据和密码 "ABCDEF"。

准备使用密码的另一种方法:

$password = convertto-securestring -String "notverysecretpassword" -AsPlainText -Force

0
0 Comments

Get-Credential的问题在于它总是提示输入密码。然而有一种方法可以规避这个问题,它需要在文件系统上将密码存储为安全字符串。

下面的文章介绍了这种方法的实现:

在不提示的情况下使用PSCredentials

总之,您需要创建一个文件来存储密码(作为加密字符串)。以下一行代码将提示输入密码,然后将其作为加密字符串存储在c:\mysecurestring.txt中。您只需要执行此操作一次:

read-host -assecurestring | convertfrom-securestring | out-file C:\mysecurestring.txt

无论何时在PowerShell命令中看到-Credential参数,它都意味着您可以传递一个PSCredential。所以在您的情况下:

$username = "domain01\admin01"
$password = Get-Content 'C:\mysecurestring.txt' | ConvertTo-SecureString
$cred = new-object -typename System.Management.Automation.PSCredential `
         -argumentlist $username, $password
$serverNameOrIp = "192.168.1.1"
Restart-Computer -ComputerName $serverNameOrIp `
                 -Authentication default `
                 -Credential $cred
                 

您可能需要不同的-Authentication开关值,因为我不知道您的环境。

0