1

毎週の Nessus スキャンに基づいてさまざまなレポートを作成するための個別のスクリプトがたくさんあります。個々のスクリプトごとに、これを実行します。

Function Get-FileName($initialDirectory)
{
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null

    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $OpenFileDialog.initialDirectory = $initialDirectory
    $OpenFileDialog.filter = "csv (*.csv)| *.csv"
    $OpenFileDialog.ShowDialog() | Out-Null
    $OpenFileDialog.FileName
}

Clear-Host

# Get the scan CSV
$inputData = Get-FileName "C:\users\$env.username\Downloads"
$data = Import-Csv $inputData 

ここから、個々のスクリプトで必要なすべての作業を行います。ファイルを一度取得し、スクリプト間で CSV を渡すだけの場所に設定したいと思います。

$data = Import-Csv $inputData 

#Call Installed Software script
". .\Build Software List (Test).ps1 $data"

#Call Most Prolific Vulnerabilities
#This continues until I've called all scripts

CSV を渡す方法をいくつか試しましたが、まだ機能していません。誰かが私が欠けているものについて私に手がかりを与えることができますか?

ありがとう!

4

2 に答える 2

1

Build Software List (Test).ps1、位置パラメータが入力を受け入れることを確認します。

param(
    [Parameter(Mandatory=$true,Position=0)]
    [psobject[]]$Data
)

# process items in $Data here

次に、次のように呼び出します。

& '.\Build Software List (Test).ps1' $Data

ファイル名からスペースを削除すると、呼び出し演算子 ( &) と引用符を無効にすることができます。

.\Build-SoftwareList.ps1 $Data
于 2016-08-18T17:55:57.227 に答える
0

ここでドットソースを使いたくないと思います。

次の行を置き換えます。

#Call Installed Software script
". .\Build Software List (Test).ps1 $data"

と:

#Call Installed Software script
&  ".\Build Software List (Test).ps1" $data

これは、現在実行中のスクリプトの一部としてスクリプトをインポートするのではなく、引数を使用してスクリプトを実行するように powershell に指示します。

ただし、これを行ったとしても、データを引数リストに追加しようとします。はファイル名ではなくオブジェクトであるため$data、代わりにパイプラインを使用することをお勧めします。

$data | & ".\Build Software List (Test).ps1"
于 2016-08-18T17:56:53.563 に答える