powershell解析cmd的特殊字符

时间:2013-07-08 10:17:44

标签: powershell cmd

我无法将powerhell 2.0中的cmds发送到cmd中的netsh。

奇怪的是,使用netsh的一种命令就可以了。

示例 - 这有效:

$input1 = @"
netsh wlan connect name=Aaknet ssid=Aaknet interface="Trådløs netværksforbindelse"
"@
$OutputVariable = ($WifiOn | netsh) | Out-String

netsh运行命令没有任何问题,尽管接口名称包含charå

但是,如果我运行这个 - Powershell解析å作为一个?到netsh cmd

$ConnectMBN = @"

netsh mbn connect interface="Mobilbredbåndsforbindelse" connmode=name name=3

"@

$ConnectMBN | netsh

pws在控制台中返回:

netsh>netsh>Decommand not found:    netsh mbn connect interface="Mobilbredb?ndsforbindelse" connmode=name name=3.

你可以看到pws把å变成了?

任何人都可以帮忙,因为我很困惑!?

2 个答案:

答案 0 :(得分:1)

找到原因 - 我的域管理员已将我的%HOMESHARE%重定向到网络驱动器 - 导致所有错误导致PWS无法在共享中找到netsh

我这样做了:         $ AakHotWifiOn = @“

  wlan connect name="AAKHotspot" ssid="AAKHotspot" interface="Trådløs    netværksforbindelse"

   "@

Invoke-WmiMethod -ComputerName . -Path win32_process -Name create -ArgumentList "netsh $AakHotWifiOn"

同样的方法适用于netsh mbn cinnect问题

感谢格雷厄姆提供的所有意见:)

答案 1 :(得分:0)

根据评论中的对话框进行了更新。

以下代码是我的建议编辑: - )

    $Char =[Char]34
    $Name ="Mobilbredbåndsforbindelse"
    $Interface ="$Char$Name$Char"
    $Name2="3"
    $Opts = @("mbn","connect","interface=$Interface","connmode=name","name=$Name2");
    netsh $Opts

因此,将netsh的参数放入数组$Opts,使用[char]34表示需要它的唯一参数中的双引号,interface。

在数组项中使用双引号而不是单引号意味着其中的任何变量都会被扩展,因此它们的内容是参数数组的一部分。

最后像在命令行上一样直接调用netsh,然后是参数数组$Opts

正如我所说,我没有移动宽带,因此我收到wwansvc未运行的错误,但如果我之后输入$Opts来查看我看到的内容:

mbn
connect
interface="Mobilbredbåndsforbindelse"
connmode=name
name=3
编辑:试试这个(尝试使用我可以测试的netsh wlan连接,因为我无法测试mbn)......

    $Char =[Char]34
    $Name ="Mobilbredbåndsforbindelse"
    $Interface ="$Char$Name$Char"
    $Name2="3"
    $connect = ("netsh mbn connect interface=$Interface connmode=name name=$Name2");
    $connect