受这篇文章的启发,我在下面创建了脚本DOSCommands.ps1
Function Invoke-DOSCommands { Param( [Parameter(Position=0,Mandatory=$true)] [String]$cmd, [String]$tmpname = $(([string](Get-Random -Minimum 10000 -Maximum 99999999)) + ".cmd"), [switch]$tmpdir = $true) if ($tmpdir) { $cmdpath = $(Join-Path -Path $env:TEMP -ChildPath $tmpname); } else { $cmdpath = ".\" + $tmpname } Write-Debug "tmpfile: " + $cmdpath Write-Debug "cmd: " + $cmd echo $cmd | Out-File -FilePath $cmdpath -Encoding ascii; & cmd.exe /c $cmdpath | Out-Null } Invoke-DOSCommands "Echo ""Hello World""", -tmpdir $false
但是,在执行时会返回此错误:
Invoke-DOSCommands : Cannot process argument transformation on parameter 'cmd'. Cannot convert value to type S ystem.String. At DOSCommands.ps1:20 char:19 + Invoke-DOSCommands <<<< "Echo ""Hello World""", -tmpdir $false + CategoryInfo : InvalidData: (:) [Invoke-DOSCommands], ParameterBindin...mationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Invoke-DOSCommands
我已经搜索了此错误,但无法解决。在我看来,它不能正确转换字符串类型!请帮忙!