昨日私は助けてくれました(特にシェイ!)、私は複数のスクリプトを思いついたので、今それらを1つにマージしています。複数のスクリプトをマージして出力を表示する機能を使用する方法
問題は、それらをすべて「関数」に入れて、1つの関数が修正プログラムの正常なチェックに依存していることです。修正プログラムがインストールされていない場合、スクリプトが正しく停止してから停止する必要がありますスクリプトのチェックを行います。どのようにして次の関数を呼び出して、修正プログラム関数の正常な出力を呼び出すのですか?
また、私はどのように関数を呼び出すのか分かりません。つまり、関数の名前を1行ずつ続けて繰り返しますが、何度も何度もループしてしまいました。
誰かが助けてくれることを願っています。
Write-Host "=================================="
Write-Host "Pre-Staging Script for DFSR Server"
Write-Host "=================================="
Function Service
{
Write-Host "=================================="
Write-Host "Checking Service Installation"
Write-Host "=================================="
write-host "This will check if Hotfix KB979808 is installed." -ForegroundColor Black -BackgroundColor Cyan
write-host "This is required for Windows Server 2008 R2 Robocopying" -ForegroundColor Black -BackgroundColor Cyan
Write-Host ""
$hotfix1 = Get-HotFix -id KB979808 -ErrorAction SilentlyContinue
If($hotfix1)
{
Write-Host "Hotfix is installed you may proceed" -foregroundcolor "green"
Write-Host ""
}
else
{
Write-Host "Hotfix is NOT installed - Please ensure you install this hotfix BEFORE" -ForegroundColor "red"
Write-host "Copying any data" -foregroundcolor "red"
Write-Host ""
}
}
Function Robocopy ($hotfix1)
{
Write-Host "============="
Write-Host "Robocopy Data"
Write-Host "============="
$Source = Read-Host "Please enter path of SOURCE"
$Destination = Read-Host "Please enter path of TARGET"
$Output = Read-Host "Please enter where to place output file eg c:\temp\COPY.log"
robocopy $Source $Target /b /e /copyall /r:1 /xd dfsrprivate /log:$Output /tee
}
Function Comparision
{
Write-Host "==============================================="
Write-Host "Checking Directory Count and Folder comparision" -ErrorAction SilentlyContinue -BackgroundColor Cyan -ForegroundColor Black
Write-Host "==============================================="
Write-Host ""
$Source = Read-Host "Please enter Source directory to check"
$Target = Read-Host "Please enter Target directory to check"
Write-Host ""
If($source -and (Test-Path -Path $source -PathType Container))
{
"There are $(@(Get-ChildItem $Source).Count) items in the '$Source' directory"
}
Else
{
Write-Host "Please enter a directory"
}
If($source -and (Test-Path -Path $Target -PathType Container))
{
"There are $(@(Get-ChildItem $Target).Count) items in the '$Target' directory"
}
Else
{
Write-Host "Please enter a directory"
}
Write-Host ""
$child1 = Get-ChildItem -Path $Source -Recurse -Force
$child2 = Get-ChildItem -Path $Target -Recurse -Force
Compare-Object $child1 -DifferenceObject $child2 -Property Name
Write-Host ""
Write-Host "NOTE:" -BackgroundColor Cyan -ForegroundColor Black
Write-Host "Any symbols with '=>' mean that the file Does NOT exist in SOURCE but is in the Target" -BackgroundColor Cyan -ForegroundColor Black
Write-Host "Any symbols with '<=' mean that the file Does NOT exist in TARGET but is in the Source" -BackgroundColor Cyan -ForegroundColor Black
}
絶対に幻想的!私はスクリプトを変更して実行し、すべて正常に動作しました。 1つの質問 - パラメータを受け入れるようにスクリプトを変更するにはどうすればいいですか?.....読み込みがあるかもしれません。 – lara400
'function MyRobocopy($ Sorce、$ Target){robocopy $ Source $ Target/b/e/copyall/r:1/xd dfsrprivate/log:$ Output/tee'となります。あなたは 'MyRobocopy C:\ Temp \ MyFolder D:\ Temp \ MyFolder'のように呼び出すでしょう。関数の詳細については 'help about_functions'を見てください。 – Rynant