【问题标题】:Have write-host output to a file in Powershell将主机输出写入 Powershell 中的文件
【发布时间】:2014-12-11 16:48:30
【问题描述】:

好的,我正在使用 Powershell 并尝试将“写入主机”输出到文件。这是我现在正在使用的代码

Function CreateNugetPackage {
    Param(
        [String] $File
    )
    Process {
        $retCode = 0
        write-verbose "Getting version of $file..."
        $version = (Get-Item $File).VersionInfo.FileVersion
        $id = $file.Substring(0, $File.LastIndexof('.'))
        $filepath = Get-ChildItem "$File"
        $OriginalFilename = (Get-Item $File).VersionInfo.OriginalFilename
        write-verbose "$id"
        write-verbose "$filepath"
        $id > test.txt
        write-host $filepath >> test.txt

所以 $id 生成不带扩展名的文件名,而我试图对 $filepath 做的是将主机输出到 test.txt 文件。我试过做“write-output $filepath >> test.txt”,但这并没有按照我想要的方式工作。而不是输出它输出的主机

Directory: C:\Users\mhopper\Documents\CreateNugetPackage


    Mode                LastWriteTime     Length Name                              
    ----                -------------     ------ ----                              
    -ar--        10/22/2014   9:17 AM    5534208 AjaxControlToolkit.dll   

而不仅仅是“C:\Users\mhopper\Documents\CreateNugetPackage\AjaxControlToolkit.dll”

任何帮助将不胜感激谢谢!

【问题讨论】:

  • 也可以试试$filepath.FullNameGet-ChildItem 返回 PowerShell 以特殊方式格式化的 FileInfo(或 DirectoryInfo)对象。
  • 是的!谢谢!这完全符合我的要求,非常感谢!

标签: powershell


【解决方案1】:

您无法重定向来自 Write-Host 的输出(它不会填充输出流并且无法通过管道传输)。

【讨论】:

  • 我尝试写输出而不是写主机,它会生成目录:C:\Users\mhopper\Documents\CreateNugetPackage Mode LastWriteTime Length Name ---- --------- ---- ------ ---- -ar-- 10/22/2014 9:17 AM 5534208 AjaxControlToolkit.dll 而不是“C:\Users\mhopper\Documents\CreateNugetPackage\AjaxControlToolkit.dll”
  • @Macauley 查看 Mike Z 对您的帖子的评论。你需要使用$filepath.FullName
猜你喜欢
  • 2021-06-10
  • 2018-11-28
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
相关资源
最近更新 更多