Powershell读取主机用户输入添加

时间:2015-02-05 17:35:49

标签: file powershell

我遇到了问题,我无法在线找到解决方案。

我有以下代码,我想读取两个输入并将它们保存在文本文件中。当用户放置他的电子邮件和API令牌时,它会创建一个文本文件并将其输入分为两行。我不知道如何使用Read-Host

例如:

  

myname@example.com   
  123456789ABCDEFG

我想要做的是使用他的输入,但在每行前面都有一个默认名称,例如:

  

电子邮件= myname@example.com   
  APIToken = 123456789abcdefg

这是我的代码:

Write-Host 'Enter your email: '
Read-Host | Out-File $CredsFile

Write-Host 'Enter your API Token: '
Read-Host | Out-File $CredsFile -Append

$CredsFile = $CredsFile -join [Environment]::NewLine
$configuration = ConvertFrom-StringData($CredsFile)
$email = $configuration.'Email'
$api_token = $configuration.'APIToken'

2 个答案:

答案 0 :(得分:3)

您可以使用sub-expressions $(...)

将调用放入字符串文字中Read-Host
Write-Host 'Enter your email: '
"Email = $(Read-Host)" | Out-File -Append $CredsFile

Write-Host 'Enter your API Token: '
"APIToken = $(Read-Host)" | Out-File -Append $CredsFile

这将允许您围绕每个输入构建自定义标签。

此外,由于Write-Host接受提示字符串参数,因此不需要调用Read-Host

"Email = $(Read-Host 'Enter your email')" | Out-File -Append $CredsFile
"APIToken = $(Read-Host 'Enter your API Token')" | Out-File -Append $CredsFile

最后,请确保您使用-Append标记与Out-File一样,如上所述。如果没有这个,每次写操作都会覆盖文件的内容。

答案 1 :(得分:0)

由于您已经尝试创建哈希表,我们可以使用单个Read-Host并拆分结果。根据目标受众,它可能被认为不太直观,但我喜欢打开你的选择。特别是如果您不需要将数据发送到文件。

$input = (Read-Host "Please enter your email and key seperated by a space").Split(" ")
$configuration = @"
    Email = {0}
    APIToken = {1}
"@ -f $input[0],$input[1] | ConvertFrom-StringData

$email = $configuration.Email
$api_token = $configuration.'APIToken'

这是假设您并不真的需要将其发送到文件。你还可以。只是不需要参与这个过程。

我看到了评论,但我猜你删了它。如果您想要将此信息完全按照示例中的方式输出到文件中,则可以执行此操作。

$configuration.GetEnumerator() | ForEach-Object{"$($_.Name) = $($_.Value)"} | Set-Content $CredsFile

根据文件的需要,您可以更简单。