我想跑:
Invoke-Command -Computer $computer -ScriptBlock {...}
但是我收到错误“访问被拒绝”winrm错误,我对使用以下内容犹豫不决:
Invoke-Command -Computer $computer -Credential $cred -ScriptBlock {...}
其中$ cred是:
$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
它必须远程运行,必须保持沉默。所以我不能在剧本中弹出PSCredential弹出窗口。
有人可以给我看一下或给我一份文件,告诉我一个可能的解决方案吗?
先感谢您。
您可以做的一件事是加密密码并将其保存到磁盘。然后,您可以读取该文件,并将加密的密码转换为安全字符串,并从中创建凭证对象。请注意,这必须使用将用于运行脚本的帐户来完成。
'$uper$secret1' | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Set-Content .\AccountPass.txt
这会将您的密码保存到文本文件中的磁盘上。如果您打开文本文件,它将类似于:
01000000d08c9ddf0115d1118c7a00c04fc297eb01000000b584d55e9c47c942904dd30531d3ad070000000002000000000003660000c0000000100000003060266c3c4333a41e7f0e92176fb3d50000000004800000a000000010000000a2c8bbb2a3666c092004bb5e66fd440320000000636a413a6905789e0f3521cea3d8703405897cd5948da955192bcccd08990ffc1400000068c1
5f8ac088ef0972dfce7d5a20ff3bbcdac4cc现在,创建该文件的帐户将是唯一可以解密它的帐户,但该帐户可以运行:
$Password = Get-Content .\AccountPass.txt | ConvertTo-SecureString
$Creds = New-Object System.Management.Automation.PSCredential ("$env:UserDomain\$env:UserName",$Password)
现在您有了一个凭证对象,而无需以明文形式保存密码。如上所述,可以解密文本文件中密码的唯一帐户是生成文本文件的帐户,并且每当密码更改时都必须更新文本文件。