yangweining 发表于 2024-11-12 14:39

[求助]powershell脚本start-job语法问题

本帖最后由 yangweining 于 2024-11-12 16:49 编辑

最近发现了powershell脚本可以使用wait-job来实现脚本运行超时功能,但是遇到了一个问题。如下所示,注释的两行都可以正常执行,但是如果把代码改为字符串拼接,并将其和start-job混合使用,就会造成对应语句无法执行,不知道有没有解决办法?考虑是做成一个函数,因此对应的执行语句必然是要采用拼接的方式,拼接的代码无法与start-job混合使用吗?$cmd = “chkdsk c:”
$logPath = “c:\\1.txt”
#cmd /c $cmd >> $logPath
#Start-Job -ScriptBlock {cmd /c chkdsk c: >> c:\\1.txt} | Wait-Job -Timeout 10
Start-Job -ScriptBlock {cmd /c $cmd >> $logPath} | Wait-Job -Timeout 10

FitContent 发表于 2024-11-12 16:03

本帖最后由 FitContent 于 2024-11-12 16:05 编辑



这可能和变量作用域有关,可以使用 `$using` 关键字(还有其它方式),必应搜索 **`$using`** 得到更详细的信息。

```powershell
Start-Job -ScriptBlock { cmd /c $using:cmd >> $using:logPath } | Wait-Job -Timeout 10
```

也可以使用 `help about_Thread_Jobs` 查看文档说明、在 `Thread jobs and variables` 小节中。
页: [1]
查看完整版本: [求助]powershell脚本start-job语法问题