在 ScriptBlock 中使用变量和参数的 cscript 调用命令的简单格式

Simple Format of cscript invoke-command with a variable and argument in ScriptBlock

我有这个 "simple" 脚本,我正在尝试 运行 在路径名中使用嵌入式变量,我尝试过使用和不使用 + 并在整个过程中使用引号,我似乎无法使变量在路径中工作。如果我 运行 它像这样,它输出到 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" } 

您必须在 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" }

这样做:

$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