[英]rm binary in Windows $PATH but Powershell still prefers Remove-Item
[英]Powershell remove-item with a timer?
我有一个脚本,我的用户可以在其中在他们的计算机上安装程序。 逻辑是->从网络路径复制安装文件到计算机的本地硬盘,用不同的凭据运行安装文件我想删除文件但是这段代码不好
copy-item "$path1" -Destination C:\ProgramData\ #copy from network path to local
$progyname = [System.IO.Path]::GetFileName($path1) #holding the programname.exe
Start-Process powershell -Credential $creds -workingdirectory c:\programdata\ -ArgumentList "-Command &{Start-Process $progyname -Verb RunAs}"
Remove-Item -path c:\programdata\$progyname -Force
问题是脚本会很快删除该项目,我实际上想等待安装完成然后删除文件。
什么可以在这里工作?
start-process 使用 passthru 参数,将返回的 ID 保存到变量中,等待进程关闭即可删除
你可以试试这个:
copy-item "$path1" -Destination C:\ProgramData\ #copy from network path to local
$progyname = [System.IO.Path]::GetFileName($path1) #holding the programname.exe
Start-Process powershell -Credential $creds -workingdirectory c:\programdata\ -ArgumentList "-Command &{Start-Process $progyname -Verb RunAs}"
$pro = $progynane.basename
If (!(Get-Process $pro -ErrorAction SilentlyContinue)){Remove-Item -path c:\programdata\$progyname -Force}
或者,如果您愿意,您可以在Start-Process
结束时使用-Wait
参数,就像@Lee_Dailey 指出的那样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.