【问题标题】:Capture Get-ChildItem results into string array for HTML output将 Get-ChildItem 结果捕获到字符串数组中以用于 HTML 输出
【发布时间】:2015-03-05 16:19:12
【问题描述】:

我正在编写一个 PowerShell 脚本,我想捕获目录中的文件列表并将其存储到一个变量中。捕获后,我想将其打印到 HTML 文件中。我已经捕获了这样的数据:

$listDownloads = Get-ChildItem -Force "C:\Users\Someuser\Downloads"

现在,我想将$listDownloads 转换为字符串并将其拆分。我该怎么做呢?

我试过这个:

$listSplit = $listDownloads.ToString().Split(" ")

但我得到了这个输出:

System.Object[]

更新:

$html = '<html>'
$body = '<body>'
$p = '<p>'
$pClose = '</p>'
$StatusDownloads = 'Directory of the Downloads Folder'
$pTags = $p.ToString() + $StatusDownloads + $pClose.ToString();
$listDownloads = (Get-ChildItem -Force "C:\Users\Someuser\Downloads").Name;




function createHTML($addtoFile){

   $addtoFile | Add-Content 'status.html'

}

function printData($printData){

    Write-Output $printData
}


$html | Set-Content 'status.html'

createHTML($html)
createHTML($body)
createHTML($pTags)
createHTML($listDownloads)

当我尝试打印 $listDownloads 时,它会将数据全部显示在同一行(即文件 1 文件 2)我希望每个文件或文件夹都显示在新行上。我该怎么做?如果我在 Powershell 中键入 Get-ChildItem -Force "C:\Users\Someuser\Downloads" ,它将逐行给出文件列表。我想在我的 HTML 页面上输出这种类型的输出。

【问题讨论】:

    标签: string powershell split


    【解决方案1】:

    我认为您想要拆分的唯一原因是获取文件名数组。

    如果是这样,你可以这样做:

    $list = (Get-ChildItem -Force "C:\Users\Someuser\Downloads").FullName
    

    从您的更新中,您需要传递给您的函数:

    createHTML($listDownloads -join "`n")
    

    【讨论】:

    • 当我尝试显示 $list 它给了我 System.Object[]
    • 我仍然无法将其转换并拆分为字符串。它给了我 String.Object[]
    • @CharlesWhitfield 它已经被拆分成字符串。你实际上试图做什么?您只需要这一行即可获得$list 中的文件名数组。如果您收到String.Object[],那么您必须在此基础上做其他事情
    • 很好地推断出 OP 想要什么。 | Select-Object -ExpandProperty FullName 也可以。虽然有点冗长
    • 它是一个包含字符串的对象数组。如果您查看单个元素,则它是 System.String。假设您可以强制转换为字符串数组:[string[]]((Get-ChildItem -Force "C:\Users\Someuser\Downloads").FullName)
    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 2010-09-13
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    相关资源
    最近更新 更多