【发布时间】:2014-03-19 22:35:51
【问题描述】:
我有一些代码可以编辑注册表,所以它需要以管理员身份运行。为此,我从正在运行的 PowerShell 脚本启动一个新的 PowerShell 进程,并传入部分注册表项路径,该路径恰好是版本号,例如“12.0”。新 PowerShell 进程中的函数将字符串接收为“12”,而不是“12.0”,因此我收到了找不到注册表项的错误。
我创建了一个小示例 powershell 脚本来重现该问题。这是sn-p:
$ScriptBlock = {
function Test([string]$VisualStudioVersion)
{
$VisualStudioVersion # This always displays 12, instead of 12.0
$Host.UI.RawUI.ReadKey()
}
}
# Run the script block's function.
Start-Process -FilePath PowerShell -ArgumentList "-Command & {$ScriptBlock Test(""12.0"")}"
这里我硬编码了“12.0”,但实际上我想传入一个变量。
关于我做错了什么有什么想法吗?提前致谢。
【问题讨论】:
标签: string powershell precision start-process