簡體   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