ここに文字列(@"E-mail text"@
)を含むコード内の電子メールのテキストをハードコードする代わりに、私たちのスクリプトの入力ファイルを作成しようとしています。しかし、$MyVariable
のように単純ではなく単純ではないが、$MyVariable.User.Name
のように対処する必要がある変数を設定するのは本当に難しいようです。ファイル内の変数を展開する
とにかく、以下のコードは問題を示しています。 VARを使用することが可能であるどのように
HTML入力ファイル
Dear $($Object.User.GivenName)
Thank you for joining the program.
コード
$SamAccountNameManager = 'Mike'
$SamAccountNameUser = 'Bob'
$File = 'C:\Test.html'
$Object = [PSCustomObject]@{
User = Get-ADUser $SamAccountNameUser -Properties GivenName
Manager = Get-ADUser $SamAccountNameManager -Properties GivenName
}
$Template = Get-Content $File
$ExecutionContext.InvokeCommand.ExpandString($Template)
エラー
Exception calling "ExpandString" with "1" argument(s): "Object reference not set to an instance of an obj
ect."
ible $Object.User.GivenName
をテキストファイルに入れ、適切な値を入力してください。
私は(テストPowerShellの特定の例からエラーを再現することはできません。基本的に、物事はあなたが望む方法を使用すると、個々の変数
を作成して、テンプレートのものを使用する必要が動作するように2および5)。 –もう一度試してみてください。同じエラーが出ています。 Windows Server 2012でPowerShell 4.0を使用する。 – DarkLite1