PowerShell module for managing BOINC clients on local and remote hosts
Install via Install-Module PSBoinc -Scope CurrentUser
.
RPC cmdlets operate in local or remote sessions. Local sessions are authenticated automatically:
Enter-BoincSession
Remote sessions require the RPC password (can be looked up from gui_rpc_auth.cfg):
Enter-BoincSession "192.168.0.11" "9096083b1c5a02d473a81784eb8e0862"
After a session has been opened, RPC cmdlets can be used to manage the client. Sessions are closed explicitly with Exit-BoincSession
and implicitly when opening another session.
Get a list of all cmdlets in PSBoinc:
Get-Command -Module PSBoinc
Get help on command Add-BoincAccountManager
:
Get-Help Add-BoincAccountManager -Detailed
Do not receive new work from any project:
Get-BoincProject | Set-BoincProject -NoMoreWork
Abort all tasks that are at least 3 days behind their deadline:
Get-BoincTask | where { ([DateTimeOffset]::Now - $_.ReportDeadline).TotalDays -ge 3 } | Stop-BoincTask
Show a list of all current tasks from Rosetta@home and PrimeGrid, grouped by project and sorted by progress:
Get-BoincTask -Project rosetta*,prime* | sort FractionDone -Descending | fl -GroupBy ProjectUrl -Property WorkunitName,FractionDone
Suspend tasks after their next checkpoint and shutdown the machine:
while ($true)
{
Get-BoincTask | where { ($_.CurrentCpuTime - $_.CheckpointCpuTime).TotalSeconds -le 30 } | Suspend-BoincTask
if (-not (Get-BoincTask | where Suspended -NE $true))
{
break
}
Start-Sleep -Seconds 10
}
Stop-Computer
Attach multiple remote clients to a project:
"pc-01","pc-02","pc-03" | foreach {
Enter-BoincSession $_ "9096083b1c5a02d473a81784eb8e0862"
Add-BoincProject "http://boinc.bakerlab.org/rosetta" "johndoe@example.com" "P@ssW0rD!"
}
Show benchmark results for a list of remote clients:
"pc-01","pc-02","pc-03" | foreach {
Enter-BoincSession $_
$hostinfo = Get-BoincHostInformation
[pscustomobject]@{Machine=$_;Whetstone=$hostinfo.FloatingPointOperations;Drhystone=$hostinfo.IntegerOperations}
}