【问题标题】:How do I pass a string to a program without formatting? [duplicate]如何在不格式化的情况下将字符串传递给程序? [复制]
【发布时间】:2021-05-08 10:58:23
【问题描述】:

gci something | select {$_.FullName} | foreach {.\echoargs.exe $_} 表明我认为只是一个字符串作为@{$_.FullName=C:\something} 传递给可执行文件。如果我尝试使用 .ToString() 之类的“将其进一步转换为字符串”,它只会以@{$_.FullName.ToString()= 的形式添加我如何摆脱这种额外的@{ 格式并仅将字符串传递给可执行文件?

【问题讨论】:

  • Select-Object -ExpandProperty FullName(Get-ChildItem -Path something).FullName
  • 这行得通,谢谢。如果您想发布与答案相同的内容,我会接受。

标签: powershell


【解决方案1】:

您所经历的是,PowerShell 会发送您拥有的对象的“字符串化”表示,例如 @{$_.FullName=C:\something}

Get-ChildItem (gci) 返回具有大量属性的 FileInfo 或 DirectoryInfo objects
将其传递给 Select-Object FullName 然后返回具有一个属性的 object(s),即 FullName,但尽管如此,它们仍然是对象,而不是字符串。

您真正想要的只是将全名路径作为 string 发送,因此您需要使用

Select-Object -ExpandProperty FullName

(Get-ChildItem -Path something).FullName

获取将发送到外部应用程序的(一组)字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2021-06-10
    相关资源
    最近更新 更多