Powershell - 使用Get-Content接受单个字符串参数或文件列表的脚本

时间:2015-03-31 23:21:50

标签: powershell input

我无法让PowerShell在命令行上接受单个字符串参数输入,或者接受一个文件作为包含服务器列表的输入。

我尝试过工作this example,但我无法让事情发挥作用。

我还尝试使用param([switch] $FileList),但IF语句未到达else块。

我希望放在一起的是一个脚本,它接受在命令行传入的单个服务器名称或接受来自文本文件的输入。我非常感谢任何指针!

-edit,使用下面运行带有/不带param的脚本返回Run on single server并且它是相同的if (($FileList -eq $false))使用Keith Hill的例子,无论我尝试通过什么脚本输出始终相同(IF块永远不会到达ELSE块)

-Edit2,第二个代码示例在将单个服务器名称传递给脚本时起作用,我的问题是尝试使[Switch]参数接受文件名并将其传递给代码块{ {1}}循环。它在ELSE行中出现以下foreach错误。

Get-EventLog : Invalid value '.\fake.txt' for parameter 'machineName'.

第二个代码示例

param([switch] $FileList)
if (($FileList -eq $true)) { "No file list input" }
Else { "Run on single server"}

1 个答案:

答案 0 :(得分:1)

如果你开始使用switch参数,这将无济于事,但如果您只想要一个可以是文件或服务器名称的参数,那么它将会有用。

param (
   [parameter(Mandatory = $true)] [string]$FileList
)

if (Test-Path $FileList) {
  "File found, do file related commands."
}
Else { "Single server actions." }