Powershell - 将带有空格的文件夹传递给脚本块

时间:2014-10-14 04:27:30

标签: powershell

我使用以下代码调用脚本超时:

function getHDriveSize($usersHomeDirectory) {
  $timeOutSeconds = 600

  $code = {
    & powershell.exe $args[0] -Path $args[1]
  }

  $job = Start-Job -ScriptBlock $code -ArgumentList $script:getHDriveSizePath, $usersHomeDirectory

  if (Wait-Job $job -Timeout $timeOutSeconds) {
    Receive-Job $job
  } else {
    'Timed Out'
  }
}

但是当$script:getHDriveSizePath中有空格时,我收到以下错误:

The term 'H:\FolderNameBeforeSpace' is not recognized as the name of a cmdlet,...

我尝试使用"'$($args[0])'"(在单引号之前使用转义字符)而不是$args[0],但后来我收到此错误:

Unexpected token '-Path' in expression or statement.

如果$script:getHDriveSizePath不包含空格,则脚本可以正常工作。

1 个答案:

答案 0 :(得分:0)

假设$script:getHDriveSizePath拥有PS1脚本的路径,您应该更改

& powershell.exe $args[0] -Path $args[1]

& powershell.exe -File $args[0] -Path $args[1]

如果您未指定-File参数,PowerShell将假定$args[0]是PowerShell命令。或者,您可以这样做:

& powershell.exe "& '$($args[0])'" -Path $args[1]

这与此处讨论的问题相同:How to run a PowerShell script?。 HTH。