我编写了以下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相关的东西。
答案 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语法,即使单引号似乎也起作用。