powershell - PowerShell Start-Job 未创建或修改文件
问题描述
我是 PowerShell 新手,这是我第一次尝试使用工作。我遇到了一个问题,我有一个脚本的一部分来查找文件,如果它不存在则创建它然后修改文件,当我运行脚本(而不是作为作业)时,它会正确执行,但是当我把它放在工作中时,它不会修改文件。
我所拥有的一个非常简化的例子是:
Start-job -Name HostCheck -ScriptBlock {
ForEach ($Host in (Get-Content -Path .\HostFile.txt) {
Add-Content .\somefile.txt "`nWrite something on a new line for $Host"
} | Out-Null
}
# Removes job once it is finished
Get-Job -Name HostCheck | Wait-Job | Remove-Job
现在我尝试| Receive-Job
在 之后添加| Out-Null
,但这似乎并没有改变任何东西。
我见过人们将整个脚本块写入一个变量,然后只使用该变量,所以我很好奇这是否是一个要求(但我不这么认为)。
此外,这可能很重要,我使用 .bat 文件打开脚本,该文件将 PowerShell 控制台升级为管理员,并将进程的执行策略设置为绕过。现在看来,在该控制台会话中运行或由该控制台会话启动的所有内容(运行了几个脚本,这只是其中一个的一部分)似乎继承了这些设置,但是对于工作来说是新的,我不知道它是否也会继承这些设置,或者我将如何强制它(如果不是)。
解决方案
Here's a workaround, cd to the current dir of the caller.
start-job { cd $using:pwd; pwd } | Receive-Job -wait -auto
推荐阅读
- ruby-on-rails - Rails devise doesn't redirect to root path
- excel-formula - Excel Formula for number of days active in a fiscal quarter
- python-3.x - Python Moviepy 安装问题(windows 7x64)
- c++ - 服务定位器实现
- javascript - 如何检查任何一个变量是否大于0
- firebase - google-services.json api_key 在 Firebase 中为空
- angular-cli - 我们可以对 codelyzer 规则使用“tslint --fix”命令吗?
- mocha.js - 使用 mocha/chai 时如何避免在多个测试中重复期望
- python - 如何使用 python3 将 CIDR 转换为 IP 范围?
- php - 准备好的语句Mysql不起作用