我正在尝试从快捷方式输入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失败。想法好吗?
答案 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
==>