4

我正在创建一个使用一些System.Diagnostics.ProcessSystem.Diagnostics.ProcessStartInfo类的 powershell 脚本。

这些类像这样完全正常工作:

$processInfo = new-object System.Diagnostics.ProcessStartInfo

$processInfo.FileName = "dism.exe"
$processInfo.UseShellExecute = $false
$processInfo.RedirectStandardOutput = $true
$processInfo.Arguments = "/Apply-Image /ImageFile:C:\images\Win864_SL-IN-837.wim /ApplyDir:D:\ /Index:1"

$process = new-object System.Diagnostics.Process
$process.StartInfo = $processInfo

但是,我也想使用 System.IO.StreamReader 类,但是当我尝试完全相同的事情时:

$stream = new-object System.IO.StreamReader

或者像这样

$stream = new-object System.IO.StreamReader $process.FileName

我得到错误:

New-Object : Constructor not found. Cannot find an appropriate constructor for type System.IO.StreamReader.
At C:\Users\a-mahint\Documents\Testing\inter.ps1:17 char:21
+ $stream = new-object <<<<  System.IO.StreamReader
    + CategoryInfo          : ObjectNotFound: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjectCommand

我一直试图弄清楚这个半小时......这是怎么回事?这两个类都是 .NET 4.0 的一部分

4

1 回答 1

6

StreamReader没有无参数构造函数,您也没有提供任何参数。

在 C# 中尝试一下。你会得到

“System.IO.StreamReader”不包含采用 0 个参数的构造函数

相反,尝试

$stream = new-object System.IO.StreamReader "foo.txt"

foo.txt现有文件在哪里。

请注意,它也没有带有参数类型的构造函数ProcessStartInfo,这就是传递$process.StartInfo不起作用的原因。相反,尝试通过$processInfo.FileName.

于 2013-06-15T00:32:38.780 回答