不同的脚本来自相同的快捷键和控制台输入

时间:2017-02-13 11:52:11

标签: powershell

我正在尝试从快捷方式输入2个args并自动分配它们:

powershell.exe -NoExit -NoProfile -File d:\scripts\swap-parms.ps1 A 7

从控制台运行时,此脚本运行正常,但不是从快捷方式运行!

[int]$digit = 6                          #Default values.
[String]$variable = 'X'
Write-Host $args[0].GetType().Name  #Shows both as String from hortcut!
Write-Host $args[1].GetType().Name
switch($args) { #Allows any order of input parameters and assigns.
    {$_.GetType().Name -eq 'Int32'}  {$digit = $_ ; continue}
    {$_.GetType().Name -eq 'String'} {$variable = $_}
}
$digit
$variable

我知道我可以使用命名参数执行此操作,例如' -var B -dig 2'但是,由于它在控制台上工作得很好,我无法理解为什么它会从快捷方式中使用相同的args失败。想法好吗?

1 个答案:

答案 0 :(得分:0)

使用-command代替-file。证明:

==> powershell -noprofile -file D:\PShell\SO\swap-parms.ps1  A 33
String
String
6
33

==> powershell -noprofile -command D:\PShell\SO\swap-parms.ps1  A 33
String
Int32
33
A

==>