1

私は誰かが助けてくれることを望んでいる問題を抱えています...

ユーザーメニューを持ち、テキストファイルと文字列「hello」を含むファイルを再帰的に検索する次のコードがあり、結果をhtmlファイルに出力します。

Foreach ($Target in $Targets){     #ip address from the text file supplied

Function gettextfiles { 

    Write-Output "Collating Detail for $Target"

    $Results = Get-ChildItem -Path $Target -Recurse -Include *.txt
    Write-Output "output from recursively searching for text files $Results"
    $MyReport = Get-CustomHTML "$Target Audit"
    $MyReport += Get-CustomHeader0  "$Target Details"
    $MyReport += Get-CustomHeader "2" "Text files found"

    foreach ($file in $Results) {
        $MyReport += Get-HTMLDetail "Path to the file" ($file)
    }

    $MyReport += Get-CustomHeaderClose

    return $MyReport
}

Function gethello {
    $Results = Get-ChildItem -Path $Target -Recurse | Select-String -pattern hello | group path | select -ExpandProperty name
    Write-Output "output from recursively looking for the string hello $Results"

    $MyReport += Get-CustomHeader "2" "Hello Strings Found"

    foreach ($file in $Results) {
        $MyReport += Get-HTMLDetail "Path to the file" ($file)
    }

    $MyReport += Get-CustomHeaderClose

    return $MyReport
}

####################################################################
# To create the html document from the data gathered in the above functions

Function printeverything([string]$MyReport) {

    $Date = Get-Date
    $Filename = "C:\Desktop" + "_" + $date.Hour + $date.Minute + "_" + $Date.Day + "-" + $Date.Month + "-" + $Date.Year + $Date.Second + ".htm"
    $MyReport | out-file -encoding ASCII -filepath $Filename
    Write "HTML file saved as $Filename"

}
###################################################################
User input menu, call the functions the user chooses then when they press 3 creates the html file

do {
[int]$xMenuChoiceA = 0
while ( $xMenuChoiceA -lt 1 -or $xMenuChoiceA -gt 4 ){
Write-host "1. Get Text Files"
Write-host "2. Get Files With The String Hello"
[Int]$xMenuChoiceA = read-host "Please enter an option 1 to 4..." }
Switch( $xMenuChoiceA ){
  1{gettextfiles}
  2{gethello}
  3{printeverything "$MyReport"}
default{<#run a default action or call a function here #>}
}
} while ($xMenuChoiceA -ne 4) 

}  #ending bracket of Targets foreach

私が抱えている問題:

ユーザー メニューを使用してスクリプトを正常に実行し、テキスト ファイルを検索し、文字列 hello を含むファイルを検索できます。検索結果は$MyReport、html ファイルの html を構築する関数を使用して追加されます。<-- これはすべて完全に機能します

printeverythingただし、変数を使用して関数を呼び出して$MyReportHTML ファイルを作成しようとすると、機能しません。

HTMLファイルを作成するコードは、私がテストしたように完全に機能します。問題は、$MyReport変数が関数に正しく渡されていないことprinteverythingだと思いますが、間違っていることを解決できません

私はPowershellを初めて使用するので、これについてあなたの助けをいただければ幸いです。

4

1 に答える 1