(PowerShell)将用户输入插入cmd参数

时间:2016-05-06 11:15:59

标签: powershell service

所以我在PowerShell上相当新,我正在尝试做一些似乎应该非常简单的事情,但我无法找到任何方法在互联网上做任何事情。老实说,我认为可能更多,因为我不熟悉术语。无论如何,这里是:

我要做的就是让Set-Service使用用户输入来定位它想要使用的服务。我认为这就像

一样简单
  

Start-Service -Name $ Services

但它总是回归为空。

我正在使用

  

$ Services = Read-Host" Service Name"

定义$ Service,我也尝试使用$ Service作为一个字符串,这似乎是导致问题但它总是以字符串为空回来。

我相信这是因为我没有使用正确的数据类型,但我不确定。如果有人可以帮我解决这个简单的问题,我会非常适用。看起来它应该非常简单的事情让我非常麻烦,真的很烦人。

谢谢,

编辑:另外我应该添加我正在尝试的完整行

  

Invoke-Command -ComputerName $ Server -Credential $ UserCreds   -ScriptBlock {Start-Service -Name $ Services}

1 个答案:

答案 0 :(得分:1)

问题是您的远程脚本无法访问本地变量。这就是为什么你应该总是在最简单的场景中测试一些东西,看它是否有效。这里的问题不在于Read-Host或变量,就像你假设的那样。

要使远程运行的脚本可以使用本地变量,您需要执行以下操作:

Invoke-Command -ComputerName $Server -Credential $UserCreds -ScriptBlock { param($Services) Start-Service -Name $Services } -ArgumentList $Services

点击此处了解更多详情: https://technet.microsoft.com/en-us/library/hh849719.aspx