管理シェルから完全に実行されるPowerShellスクリプトを作成しました。Windows Server 2008 R2のスケジュールされたタスクで機能するようにセットアップしようとしていますが、文字列配列パラメーターのパラメーターを渡す方法がわかりません。
これが私のスクリプトの関連部分です:
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[String]
$BaseDirectory,
[String]
$BackupMethod = "Full",
[Int]
$RemoveOlderThanDays = 0,
[String]
$LogDirectory,
[Int]
$LogKeepDays = 7,
[String[]]
$AdditionalDirectories
)
if ($AdditionalDirectories -and $AdditionalDirectories.Count -gt 0) {
Write-Host " Additional Directories to be included:" -ForegroundColor Green
$AdditionalDirectories | ForEach-Object {
Write-Host " $_" -foregroundcolor green
}
}
問題を与えるパラメータは、最後のパラメータ$AdditionalDirectories
です。
シェルから:
このように管理シェルからスクリプトを実行すると、完全に機能します。
.\FarmBackup.ps1 \\SomeServer\Backups Full 0 D:\Logs\Backups 0 "D:\Documents\PowerShell Scripts","D:\SomeFolder"
結果:
Additional Directories to be included:
D:/Documents/PowerShell Scripts
D:/SomeFolder
スケジュールされたタスクから:
処置: プログラムを開始してください
プログラム/スクリプト: PowerShell.exe
引数: -File "D:\ Documents \ PowerShell Scripts \ FarmBackup.ps1" \\ SomeServer \ Backups Full 0 D:\ Logs \ Backups 0 "D:\ Documents \ PowerShell Scripts"、 "D:\ SomeFolder"
結果:(ログファイルから)
Additional Directories to be included:
D:\Documents\PowerShell Scripts,D:\SomeFolder
これらのパラメーターに対していくつかの異なる方法を試しましたが、文字列配列内の2つの別個の文字列として表示されるようには見えません。今のところハードコーディングしていますが、シェルから実行すると完全に有効であるため、これを機能させる方法があるはずです。