推送/弹出和重启问题

时间:2019-05-06 13:58:42

标签: powershell batch-file

我编写了以下Powershell,它为所选文件夹中的所有驱动程序创建了一个bat安装程序,然后应重新启动计算机。

New-Item C:\Tools\Drivers\DellLatitude3450.bat

Add-Content C:\Tools\Drivers\DellLatitude3450.bat -Value '

pushd C:\Tools\Drivers\

forfiles /p DellLatitude3450 /s /m *.inf /c "cmd /c pnputil -i -a @Path"

rmdir /s /q "C:\Tools\Drivers\DellLatitude3450"

rmdir /s /q "C:\Tools\Drivers\Elevate"

del /f "C:\Tools\Drivers\Elevate.zip"

del /f "C:\Tools\Drivers\DellLatitude3450.bat"

shutdown /r /t 15

popd

'

除重新启动外,生成的蝙蝠工作正常。

我尝试只通过 shutdown (关机)来创建蝙蝠,并且它起作用了,所以我缺少与push / popd相关的东西。

1 个答案:

答案 0 :(得分:3)

我测试了文件创建。必须将-ItemType 'file'添加到New-Item,否则提示我输入 type

主要问题

您应该在应该执行shutdown命令之前删除批处理文件。将删除行向下移动到批处理文件代码的底部。然后应该允许执行shutdown命令,因为在删除批处理文件之前,它会立即结束。

通过批处理文件创建测试的代码:

New-Item C:\Tools\Drivers\DellLatitude3450.bat -ItemType 'file'

Add-Content C:\Tools\Drivers\DellLatitude3450.bat -Value @'

pushd C:\Tools\Drivers\

forfiles /p DellLatitude3450 /s /m *.inf /c "cmd /c pnputil -i -a @Path"

rmdir /s /q "C:\Tools\Drivers\DellLatitude3450"

rmdir /s /q "C:\Tools\Drivers\Elevate"

del /f "C:\Tools\Drivers\Elevate.zip"

shutdown /r /t 15

popd

del /f "C:\Tools\Drivers\DellLatitude3450.bat"

'@

注意:我添加了About Quoting Rules中提到的here-doc语法,即使单引号似乎也起作用。