使用ScriptBlock中的变量和参数的简单格式的cscript invoke-command

时间:2016-12-29 14:59:59

标签: powershell format invoke-command

我有这个“简单”的脚本我试图在路径名中使用嵌入变量运行,我已经尝试过使用+和引号围绕整个事情,我似乎无法获得一个变量来工作路径。如果我像这样运行它,它输出到C:\ Scripts \ Audit而不是C:\ Scripts \ Audit \ 20161229_Audit \ GPO_Reports。你能不能在ScriptBlock中使用变量,我已经看到了使用ArgumentList的注释,但我不太确定如何在路径名中使用变量时这样做。

$Date = Get-Date -format yyyyMMdd
Invoke-Command -ComputerName localhost -ScriptBlock { cscript "c:\program files\GPMC\Scripts\GetReportsForAllGPOs.wsf" "C:\Scripts\Audit\"+$date+"_Audit\GPO_Reports /domain:contuso.local" } 

1 个答案:

答案 0 :(得分:1)

您必须在 scriptblock 中传递参数列表,因为它不在范围内。

代替:

$Date = Get-Date -format yyyyMMdd
Invoke-Command -ComputerName localhost -ScriptBlock { cscript "c:\program files\GPMC\Scripts\GetReportsForAllGPOs.wsf" "C:\Scripts\Audit\"+$date+"_Audit\GPO_Reports /domain:contuso.local" }

DO This:

$Date = Get-Date -format yyyyMMdd
Invoke-Command -ComputerName localhost -ScriptBlock {param($Date) cscript "c:\program files\GPMC\Scripts\GetReportsForAllGPOs.wsf" "C:\Scripts\Audit\$($date)_Audit\GPO_Reports /domain:contuso.local" } -ArgumentList $Date