2014-06-18 46 views
3

我一直在研究一個腳本,該腳本應該在磁盤C時靜靜地運行cleanmgr.exe:小於1GB,這一切都運行良好,但有一件事我無法實現...使用PowerShell以靜默方式自動執行cleanmgr.exe

我想靜靜地運行cleanmgr.exe!我不想從磁盤清理gui中看到任何東西,甚至沒有看到完成的屏幕。

使用sageset和sagerun使它自動化是的,但它仍然顯示過程。

這裏是我的代碼(我知道它有關於一些事情的一些問題,但我在這裏着重於無聲執行,謝謝!):

if ($freeSpace -le $lowSpace) 
{ 
    cleanmgr.exe /sagerun:10 
    defrag C: 
} 

else 
{ 
    echo "sorry!" 
    pause 
} 
+1

解決任何可能導致您首先在磁盤空間上運行危險程度較低的情況會更好。 – alroc

+0

這是我和朋友之間的一個挑戰,與修理東西無關。 :D – AliAlghamdi

+0

這是http://stackoverflow.com/q/28852786/80161的重複問題,我正在將答案轉移到那裏。 –

回答

1

如果您在命令提示符下導航到C:\windows\system32\cleanmgr.exe /?你將看到exe的開關。不幸的是,它看起來像這個實用程序沒有靜音開關。

enter image description here

+0

謝謝!之前我已經介紹過,我只是問有沒有辦法,顯然沒有。 – AliAlghamdi

+0

@AliAlghamdi不,我沒有看到這樣做的方式。如果我的答案足夠了,請將其標記爲答案。 – krousemw

+0

謝謝,我現在還沒有看到這樣做。所以謝謝你。 – AliAlghamdi

0

我發現這樣做是讓用schtasks的調度任務的最好方法(我建立了一個被部署XML配置),並在創建運行的任務,它可以被設置來運行設置作爲系統/管理員(你需要一個磁盤碎片整理)和非交互式。我遇到的唯一問題是Windows更新清理組件似乎無法運行。

0

所以不知道你在哪裏用這個,但這是我用來清理我們在部署到VMware之前在Packer中構建的模板。

$strKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches" 
$strValueName = "StateFlags0065" 
$subkeys  = Get-ChildItem -Path $strKeyPath -Name 

ForEach($subkey in $subkeys){ 
    $null = New-ItemProperty ` 
     -Path $strKeyPath\$subkey ` 
     -Name $strValueName ` 
     -PropertyType DWord ` 
     -Value 2 ` 
     -ea SilentlyContinue ` 
     -wa SilentlyContinue 
} 

Start-Process cleanmgr ` 
     -ArgumentList "/sagerun:65" ` 
     -Wait ` 
     -NoNewWindow ` 
     -ErrorAction SilentlyContinue ` 
     -WarningAction SilentlyContinue 

ForEach($subkey in $subkeys){ 
    $null = Remove-ItemProperty ` 
     -Path $strKeyPath\$subkey ` 
     -Name $strValueName ` 
     -ea SilentlyContinue ` 
     -wa SilentlyContinue 
} 

exit 0 
3

實際上cleanmgr /verylowdisk默默運行。

cleanmgr /verylowdisk就像沒有用戶交互的cleanmgr /lowdisk版本。

相關問題