这个问题在这里已经有答案:
How can you use an object's property in a double-quoted string?(5个答案)
13天前关门了。
这篇帖子是13天前编辑并提交审查的,未能重新打开帖子:
原始关闭原因未解决
我需要你的帮助来确定我为什么不能输出PowerShell脚本进程ExitCode以及如何解决这个问题。我认为这与START-PROCESS命令的结果的数据类型和其中的ExitCode属性有关(根据底部的错误消息,它似乎是“AnyType”)。
我有一个名为out.bat的简单CMD批处理文件,如下所示:
@echo off
echo Hello World, it's %1!
然后,我有一个名为out.ps1的七行PowerShell脚本,如下所示:
1. $a = "C:\Temp\"
2. $b = "out.txt"
3. $c = "out.bat"
4. $process = Start-Process -FilePath "${a}${c}" -ArgumentList "123" -RedirectStandardOutput ${a}${b} -Wait -PassThru
5. Get-Content ${a}${b}
6. Write-Output $process.ExitCode
7. Write-Output "Error: $process.ExitCode"
我的PowerShell脚本确实成功地输出了由我的CMD批处理脚本文件发回的错误代码,并将其输出到上面的第六行。
Hello World, it's 123!
0
然而,最后一行失败了,
Cannot convert value to type System.String.
At line:7 char:1
+ Write-Output "Error: $process.ExitCode"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromAnyTypeToString
如何才能让第7行简单地输出以下内容?
Error: 0
1条答案
按热度按时间z3yyvxxp1#
您必须使用子表达式
$(..)
运算符才能使其计算该属性的引用: