繁体   English   中英

Powershell 用计时器移除项目?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM