在PowerShell中,在启动过程中设置亲和力

在PowerShell中,我可以启动一个进程

$app_name = "app.exe" $app_arguments = "arg0" Start-Process $app_name $app_arguments 

我尝试设置亲和力

 $app = Start-Process $app_name $app_arguments $app.ProcessorAffinity = 0x3 

….没有工作。

Windows PowerShell中,当我启动一个过程如何设置亲和力?

我可以解决

 $app_name = "app.exe" $app_arguments = "arg0" $pinfo = New-Object System.Diagnostics.ProcessStartInfo $pinfo.FileName = $app_name $pinfo.Arguments = $app_arguments $p = New-Object System.Diagnostics.Process $p.StartInfo = $pinfo $p.Start() $p.ProcessorAffinity=0x3 

PowerShell启动脚本

我错过了DOS start命令,所以我将@ JuanPablo的代码合并到一个名为PSstart.ps1的shell脚本中,您可以使用它来替换PowerShell中的start命令。

就像PowerShell -file PSStart.ps1 -affinity <affinity> -priority <priority> <path to executable> <executable arguments>一样使用它PowerShell -file PSStart.ps1 -affinity <affinity> -priority <priority> <path to executable> <executable arguments>享受!


 param([Int32]$affinity=0xF,[String]$priority="NORMAL", [String]$appPath="", [String]$appArguments="") [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") # For message box error reports, remove if you don't want popup errors $priorityValues = "LOW", "NORMAL", "HIGH", "REALTIME", "ABOVENORMAL", "BELOWNORMAL" # Remove ABOVENORMAL and BELOWNORMAL if running on Win98 or WinME $priorityUC = $priority.ToUpper() $pinfo = New-Object System.Diagnostics.ProcessStartInfo If($appPath -ne "" -and (Test-Path $appPath)) { If($priorityValues -contains $priorityUC) { Try { $pinfo.FileName = $appPath $pinfo.Arguments = $app_arguments $p = New-Object System.Diagnostics.Process $p.StartInfo = $pinfo $p.Start() $p.PriorityClass=$priorityUC $p.ProcessorAffinity=$affinity } Catch { $exceptionMessage = $_.Exception.Message #Write-Host "An exception:`n`n$exceptionMessage`n`noccured!" -fore white -back red # Uncomment for console errors [System.Windows.Forms.MessageBox]::Show("An exception:`n`n$exceptionMessage`n`noccured!", "An Exception Occured", "Ok", "Error"); Break } } Else { #Write-Host "The priority: `"$priorityUC`" is not a valid priority value!" -fore white -back red # Uncomment for console errors [System.Windows.Forms.MessageBox]::Show("The priority: `"$priorityUC`" is not a valid priority value!", "A Priority Error Occured", "Ok", "Error"); } } Else { #Write-Host "The application path: `"$appPath`" doesn't exist!", "A Path Error Occured" -fore white -back red # Uncomment for console errors [System.Windows.Forms.MessageBox]::Show("The application path: `"$appPath`" doesn't exist!", "A Path Error Occured", "Ok", "Error"); }