我無法讓PowerShell在命令行上接受單個字符串參數輸入或接受包含服務器列表的輸入文件。Powershell - 接受使用Get-Content的單個字符串參數或文件列表的腳本
我試過工作this example但我不能讓事情工作。
我也嘗試使用param([switch] $FileList)
,但IF
聲明沒有達到else
塊。
我希望放在一起的是一個腳本,它接受在命令行中傳入的單個服務器名稱或接受來自文本文件的輸入。我很欣賞任何指針!
-edit,使用下面運行的腳本/沒有PARAM返回Run on single server
,它是同if (($FileList -eq $false))
使用基思·希爾的例子,又不管我怎麼努力通過腳本中的輸出總是相同(IF模塊從未達到ELSE
塊)
-Edit2,第二個代碼示例在將單個服務器名稱傳遞給腳本時起作用,問題對於我試圖讓[Switch]
參數接受文件名並將其傳遞給代碼塊foreach
循環。它在ELSE行的以下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"}
第二個代碼示例
param(
[switch]$FileList,
[string]$server)
if ($FileList -eq $true) {
$list = GC $FileList
foreach ($server in $list){Get-EventLog -ComputerName $server -LogName system | Where-Object {$_.EventID -eq '6005'} | Select TimeGenerated,Message | Select -first 1}#End foreach
}
Else{
Get-EventLog -ComputerName $server -LogName system | Where-Object {$_.EventID -eq '6005'} | Select TimeGenerated,Message | Select -first 1
}
您使用@Keith Hill示例時出現了哪個問題? – JPBlanc 2015-04-01 03:31:23
編輯問題以提供更多詳細信息。到目前爲止,我無法專注於此,對發佈不完整的問題表示歉意。 – user4317867 2015-04-01 05:24:55
一個'[switch]'參數不能取值 - 它更類似於布爾值。如果它在參數中被指定,它變爲'$ true',否則它的'$ false'。如果你想要一個服務器陣列,你需要使用'[string []] $ servers'作爲參數 – arco444 2015-04-01 08:56:27