我无法让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"}
答案 0 :(得分:1)
如果你开始使用switch参数,这将无济于事,但如果您只想要一个可以是文件或服务器名称的参数,那么它将会有用。
param (
[parameter(Mandatory = $true)] [string]$FileList
)
if (Test-Path $FileList) {
"File found, do file related commands."
}
Else { "Single server actions." }