Invoke-comand - lange Ausführungszeit

481
Magl

Ich arbeite an dem Powershell-Skript, mit dem bestimmte Firewall-Regeln auf Remote-Computern im lokalen Subnetz remote aktiviert / deaktiviert werden. Hier ist der Code:

$pc="PC1" if (Test-Connection -ComputerName $pc -Count 1 -quiet) { $RuleName = "" ICM -ComputerName PC1 -ScriptBlock { Param($FWRule) IF(Get-NetFirewallRule $FWRule | where{$_.Enabled -eq $True}) ELSE IF(Get-NetFirewallRule $FWRule | where{$_.Enabled -eq $True}) ELSE $value = read-host "Script completed,`npress [Enter] to exit" Switch ($value){ 'Enter' {'Koniec' ; exit} } } -ArgumentList $RuleName } else | to_entries | .[] | . as  | $data | map() | map(.price * .qty) | add | "Total \($kind): \(. * 100 | round / 100) USD" 

Führen Sie als jq -r -f filename.jqoder ausjq -r ' | .....'

Beachten Sie, dass jq auf die Genauigkeit eines IEEE 754 'double' beschränkt ist.

(Es scheint auch, dass die API standardmäßig nur maximal 100 Elemente zurückgibt (bis zu 1000), daher sind dies ohnehin möglicherweise nicht die richtigen Werte. Siehe Dokumente. )

0
Ich würde vorschlagen, dass Sie neu schreiben, und testen Sie jedes Segment einzeln, um sicherzustellen, dass Sie bekommen, was Sie denken. In diesem Skript gibt es einige echte Probleme, IMHO. Die Hand liegt darin, dass Sie Fernbefehle für sich selbst verwenden. In den meisten Fällen ist dies mit Workstations nicht möglich. Versuchen Sie es auf Ihrem eigenen Computer und sehen Sie, was ich meine. --- Invoke-Command -ComputerName $ env: COMPUTERNAME -ScriptBlock --- es wird nur hängen --- dann den gleichen Befehl auf einem Server versuchen --- es wird erfolgreich sein. postanote vor 5 Jahren 0

0 Antworten auf die Frage