不需要提示输入密码就可以使用PowerShell凭据
不需要提示输入密码就可以使用PowerShell凭据
我想重新启动一个属于域的远程计算机。我有一个管理员帐户,但我不知道如何从powershell中使用它。
我知道有一个Restart-Computer
cmdlet,并且我可以传递凭据,但如果我的域例如为mydomain
,我的用户名为myuser
,我的密码为mypassword
,正确的语法是什么?
我需要安排计划重新启动,这样我就不必输入密码。
admin 更改状态以发布 2023年5月24日
还有一种方法,但是...
如果您不想把密码存储在脚本文件中,请不要这样做(在脚本中存储密码并不是个好主意,但有些人只是想知道如何做)。
好的,这是警告,下面是代码:
$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
Get-Credential
的问题在于它总是提示输入密码。然而有一种方法可以规避这个问题,它需要在文件系统上将密码存储为安全字符串。
下面的文章介绍了这种方法的实现:
总之,您需要创建一个文件来存储密码(作为加密字符串)。以下一行代码将提示输入密码,然后将其作为加密字符串存储在
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
开关值,因为我不知道您的环境。