所以我在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}
答案 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