1

我无法将 cmd 从 powershell 2.0 发送到 cmd 中的 netsh。

奇怪的是,使用一种类型的命令来 netsh 它可以工作

示例 - 这有效:

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

netsh 运行命令没有任何问题,即使接口名称包含字符 å

但是如果我运行这个 - 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 将 å 变成 ?

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

4

2 回答 2

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 问题

感谢 Graham 的所有输入 :)

于 2013-07-10T12:00:16.883 回答
0

根据我们在评论中的对话进行了更新。

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

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

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

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

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

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

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

编辑:试试这个(尝试使用我可以测试的netsh wlan connect,因为我无法测试mbn)......

    $Char =[Char]34
    $Name ="Mobilbredbåndsforbindelse"
    $Interface ="$Char$Name$Char"
    $Name2="3"
    $connect = ("netsh mbn connect interface=$Interface connmode=name name=$Name2");
    $connect
于 2013-07-08T12:21:04.400 回答