我试图在PowerShell上创建一个脚本,它询问我是否要访问3个网站的列表,然后询问我想使用哪种浏览器,无论是谷歌浏览器还是IE浏览器。
我知道我将使用的脚本,即
[System.Diagnostics.Process]::Start("chrome.exe","http://www.google.com")
IE部分的和iexplore.exe
。但它最终给我一个错误,说索引丢失,并有一个意外的令牌。我在这里做错了什么?
以下是我的代码的一部分:
#Now I added menu 2 to the script by using a switch
Switch ($xMenu1){ #Second Menu appears
1 {
while ( $xMenu2 -lt 1 -or $xMenu2 -gt 4 ){
CLS
# Menu option appears
Write-Host "`t Select the browser you would like to open this website with" -Fore Cyan
Write-Host "`t 1. Google Chrome" -Fore Cyan
Write-Host "`t 2. IE" -Fore Cyan
Write-Host "`t 3. Go to Main Menu" -Fore Cyan
[int]$xMenu2 = Read-Host "`t`tEnter Menu Option Number"
#The start-Sleep indicates how long the error message starts and disappears
if( $xMenu2 -lt 1 -or $xMenu2 -gt 4 ){
Write-Host "'t error, the number you entered was not part of the menu" -Fore Red;start-Sleep -Seconds 3
}
}
Switch ($xMenu2){
1{ ""[System.Diagnostics.Process]::Start("chrome.exe","http://www.google.com")"" }
2{ "[System.Diagnostics.Process]::Start("iexplore.exe","http://www.google.com")" }
}
答案 0 :(得分:1)
你的引言搞砸了:
Switch ($xMenu2){
1{ ""[System.Diagnostics.Process]::Start("chrome.exe","http://www.google.com")"" }
2{ "[System.Diagnostics.Process]::Start("iexplore.exe","http://www.google.com")" }
}
您尝试调用System.Diagnostics.Process
类的静态方法,因此您不能首先将表达式放在引号中:
Switch ($xMenu2){
1{ [System.Diagnostics.Process]::Start("chrome.exe","http://www.google.com") }
2{ [System.Diagnostics.Process]::Start("iexplore.exe","http://www.google.com") }
}
另外,如果由于某种原因你必须在字符串中使用嵌套的双引号,你必须将它们转义("...`"..."
)或使用单引号作为外引号('..."...'
)。