将用户名和密码添加到 Powershell 脚本
Add username and password to Powershell script
我正在尝试创建一个 powershell 脚本,以允许我的孩子在需要时从他们的 Windows 计算机上重新启动我的 Raspberry Pi。我已经测试了所有内容并使其正常工作,但唯一的问题是它提示输入用户名和密码。我意识到这样做的行是:
New-SSHSession -ComputerName "myPi" -Credential (Get-Credential)
我进行了一些搜索,但我似乎无法弄清楚是否可以替换“(Get-Credential)”部分以自动输入 username/password。
是的,我知道安全风险。他们对 Windows 机器造成的损害比对 Pi 造成的损害要大得多,而且 Pi 上的设置很容易恢复,所以我不用担心。
像这样的东西应该可以工作:
$user = "someuser"
$pass = ConvertTo-SecureString -String "somepassword" -AsPlainText -Force
$creds = new-object -typename System.Management.Automation.PSCredential -argumentlist $user,$pass
New-SSHSession -ComputerName "myPi" -Credential $creds
您也可以调用其中加密了密码的文件。请注意,这只能由生成它的计算机上生成它的帐户解密。
$pass = "Password"
$Username = "Username"
$outfile = "c:\filelocation.xml"
$secureStringPwd = $pass | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($Username,$secureStringPwd)
$credential | Export-CliXml -Path $OutFile
解决法案。
正确,在脚本中硬编码密码是不好的做法。下面是我将如何更改第一部分。
以上内容来自一个自定义脚本,其目的是通过输入创建许多信用帐户 json 这就是我这样写的原因。
$outfile = "c:\filelocation.xml"
Get-Credential | export-clixml -path $OutFile
然后您可以像这样在脚本中调用该文件,但这必须在生成 creds 文件的同一用户和计算机上完成。
$Creds = Import-Clixml -Path "c:\file.xml"
New-SSHSession -ComputerName "myPi" -Credential $creds
好点已编辑 -argumentlist。
另一种选择是使用 get-credential
进行 1 次设置,然后使用 convertfrom-securestring
将密码转换为明文,然后在文件中您可以使用密码明文安全字符串等类似内容其他答案:
$user = "someuser"
$pass = "YOUR LONG PASSWORD GUID FROM ABOVE" | convertTO-securestring
$creds = new-object -typename System.Management.Automation.PSCredential -argumentlist $user,$pass
New-SSHSession -ComputerName "myPi" -Credential $creds
这让您可以进行一次性设置,但可以避免拥有多个文件或让您的密码以可读的方式出现在脚本中。
如果你这样做,你需要从将 运行 脚本的帐户进行设置,在将 运行 脚本的机器上,因为到目前为止它使用那些用于加密我所知。
我正在尝试创建一个 powershell 脚本,以允许我的孩子在需要时从他们的 Windows 计算机上重新启动我的 Raspberry Pi。我已经测试了所有内容并使其正常工作,但唯一的问题是它提示输入用户名和密码。我意识到这样做的行是:
New-SSHSession -ComputerName "myPi" -Credential (Get-Credential)
我进行了一些搜索,但我似乎无法弄清楚是否可以替换“(Get-Credential)”部分以自动输入 username/password。
是的,我知道安全风险。他们对 Windows 机器造成的损害比对 Pi 造成的损害要大得多,而且 Pi 上的设置很容易恢复,所以我不用担心。
像这样的东西应该可以工作:
$user = "someuser"
$pass = ConvertTo-SecureString -String "somepassword" -AsPlainText -Force
$creds = new-object -typename System.Management.Automation.PSCredential -argumentlist $user,$pass
New-SSHSession -ComputerName "myPi" -Credential $creds
您也可以调用其中加密了密码的文件。请注意,这只能由生成它的计算机上生成它的帐户解密。
$pass = "Password"
$Username = "Username"
$outfile = "c:\filelocation.xml"
$secureStringPwd = $pass | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($Username,$secureStringPwd)
$credential | Export-CliXml -Path $OutFile
解决法案。
正确,在脚本中硬编码密码是不好的做法。下面是我将如何更改第一部分。
以上内容来自一个自定义脚本,其目的是通过输入创建许多信用帐户 json 这就是我这样写的原因。
$outfile = "c:\filelocation.xml"
Get-Credential | export-clixml -path $OutFile
然后您可以像这样在脚本中调用该文件,但这必须在生成 creds 文件的同一用户和计算机上完成。
$Creds = Import-Clixml -Path "c:\file.xml"
New-SSHSession -ComputerName "myPi" -Credential $creds
好点已编辑 -argumentlist。
另一种选择是使用 get-credential
进行 1 次设置,然后使用 convertfrom-securestring
将密码转换为明文,然后在文件中您可以使用密码明文安全字符串等类似内容其他答案:
$user = "someuser"
$pass = "YOUR LONG PASSWORD GUID FROM ABOVE" | convertTO-securestring
$creds = new-object -typename System.Management.Automation.PSCredential -argumentlist $user,$pass
New-SSHSession -ComputerName "myPi" -Credential $creds
这让您可以进行一次性设置,但可以避免拥有多个文件或让您的密码以可读的方式出现在脚本中。
如果你这样做,你需要从将 运行 脚本的帐户进行设置,在将 运行 脚本的机器上,因为到目前为止它使用那些用于加密我所知。