問題タブ [start-job]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - 開始ジョブと呼び出しコマンド -asjob
PowerShell 2.0 で基本的なバックグラウンド ジョブを実行しようとしていますが、start-job と invoke-command -asjob で異なる結果が得られます。
私がこれを行う場合:
start-job -scriptblock {get-process}
ジョブ オブジェクトを取得しましたが、(start-job によって自動的に作成された) 子ジョブの JobStateInfo は常に "NotStarted" です。
ただし、これは期待どおりに機能します。
invoke-command -scriptblock {get-process} -computer localhost -asjob
enable-psremoting を実行しました....バックグラウンド ジョブを機能させるために他に必要なことはありますか?
powershell - PowerShell開始ジョブ作業ディレクトリ
Start-Jobコマンドに作業ディレクトリを指定する方法はありますか?
使用事例:
私はディレクトリにいて、編集のためにEmacsを使用してファイルを開きたいです。これを直接行うと、Emacsを閉じるまでPowerShellがブロックされます。しかし、Start-Jobを使用すると、ホームディレクトリからEmacsを実行しようとするため、Emacsに必要なファイルではなく新しいファイルを開かせます。
$ pwdを使用してフルパスを指定しようとしましたが、スクリプトブロック内の変数は、Start-Jobコンテキストで実行されるまで解決されません。したがって、シェルコンテキストで変数を強制的に解決する方法も、これに対する許容可能な答えになります。
完全を期すために、これが私が試したことです。
powershell - start-job 内で実行すると PSExec が完了しない
48台のコンピューターのリストでcmdファイルを実行しようとしています。各コマンドが完了するまでに約10分かかるため、実行して順番に完了するのを待ちたくありません。WinRM はオプションではありません。どちらも WMI ではありません。PSExecはオプションです....しかし、Start-Job 内で動作させることはできないようです。
私は次のようなことをしています:
これにより、一連のジョブが作成されます....しかし、決して完了せず、それらのいずれかでReceive-Jobを実行すると、元に戻ります
次のような関数を実行すると、問題なく実行されます。
サーバー 2008r2 ボックスの Powershell v2.0 で開始スクリプトが実行される ドメイン管理者のユーザー ID でログインしているときに、domain2 のボックスで試してみました (同じ結果)。
powershell - PowershellStart-ジョブが実行されない
PowerShell 2.0で単純なジョブプロセスを実行しようとしていますが、実行されていないようです。
$ jobを呼び出すと、ステータスに「実行中」と表示されます。しかし、問題はそれが決して完了しないということです。
私のWindows7マシンで同じことを試しましたが、すぐに完了します。
WindowsXPでPowerShell2.0を実行しています。
誰かがこの問題の原因を知っていますか?この問題を解決するにはどうすればよいですか?
これは私の$PSVersionTable
powershell - Start-Jobスクリプトブロック内で、資格情報を持つGet-WmiObjectが失敗する
Get-WmiObjetコマンドレットを使用して、Windows2000マシンからいくつかの情報を正常に取得しています。これらのマシンはドメインの一部ではないため、-Credentialパラメーターを使用してローカル管理者の資格情報を渡します。
現在、Start-Jobを使用して複数のWMIクエリを並行して実行しようとしていますが、1つのクエリでも機能させることができません。
私が以下を実行すると:
ジョブが作成され、資格情報の入力を求められますが、ジョブが完了することはなく、その状態は常に「実行中」です。
もちろん:
うまく動作します。
Get-WmiObjectを代替クレデンシャルを使用してStart-Job内で正常に実行するにはどうすればよいですか?
ご協力いただきありがとうございます。
powershell - PowershellStart-管理者として実行されるジョブの新しいウィンドウ
別のスクリプトにコマンドを書き込み、Start-Jobコマンドを使用して新しいウィンドウでそれらを開始するスクリプトがあります(本当に必要です)。$ credは、ローカル管理者の資格情報です。メインスクリプトは、「管理者として実行」(マシン管理者として)を開いたPowerShellウィンドウから開始されました。COMMANDは、マシン管理者アカウントで開く必要があります(「管理者として実行」で開く新しいウィンドウなど)。ただし、新しいウィンドウはローカル管理者権限でのみ開きます。この問題を解決するための情報をインターネットで検索しましたが、失敗しました。誰かが、マシン管理者(「管理者として実行」)でstart-jobコマンドを使用して新しいウィンドウを実行する方法を知っている可能性がありますか?
powershell - pscustomobject を start-job スクリプト ブロックに渡すと、スクリプト プロパティが失われるのはなぜですか?
Windows XP x64 (および win2k3 を想定) powershell 2.0 では、pscustomobjects の arraylist を start-job に引数リスト パラメータとして渡すと、オブジェクトが渡されますが、scriptproperties はオブジェクトから消えます (get-member で確認)。pscustomobject のプロパティは問題なく返されることに注意してください
理由を知っている人はいますか?および/または回避策がありますか?
$dbs は、さまざまな note プロパティと script プロパティを持つ pscustomobjects の配列リストです。
すべてのスクリプト プロパティは、start-job に渡されると消えますが、note プロパティは正常に機能します。
以下、開始ジョブ外で実行
戻り値
...
その間
戻り値
powershell - Start-Job スクリプトブロック内でリモートの Get-WmiObject 呼び出しが失敗する
わかりました、私はこれを理解しようとしましたが、インターウェブに尋ねる時が来たと考えました. これはバグなのか何なのか気になります。
複数のコンピューターに対してジョブを開始して、それらに存在するデータベース名を特定しようとしています。
私のコンピュータ 1 のシステム セットアップは次のとおりです。Powershell 2.0、Windows 2k3 Enterprise x64
Computer1 で次を実行できます。
そして、ジョブは永久に「実行中」の状態でスタックします。しかし、シェルのジョブのスクリプト ブロックの外で同じコマンドを実行した場合はそうではありません。
ここで、ローカル管理者の(対私のドメイン)資格情報を使用してこの正確なセットアップを試しましたが、同じ結果になりました。何らかの理由でうまくいきません。
gwmi を使用しないカスタム WMI dotnet オブジェクトを作成しようとしましたが、同じ結果が得られました。
-asjob パラメータ?: これは解決策ではありません。
このパラメーターを使用すると、12 GB のシステムで約 2 GB のメモリを使用すると、powershell ウィンドウがクラッシュします。一方、start-job は 12GB まで問題なく使用できます。すべてのクエリをシリアルに実行することもできます。
また、Gwmi で -Asjob パラメーターを使用するとメモリが再利用されないため、それ以上ジョブを続行できません。「remove-job * -force」または「[GC]::Collect()」を実行した後でも、powershell.exe のメモリ消費量は頑固に変わりません (これも start-job とは異なります)。
SQL インスタンス名が異なるため、wmi クラス名も異なります。したがって、複数のクラスに対して複数のクエリ コマンドを実行する必要があります。技術的には実行可能ですが、より複雑で、上記のメモリ要件を考えると、2 GB に制限されます。誰かが start-job を本来のように機能させる方法を知っていることを願っています。
私が試していない唯一のことは、権限パラメーターを指定する必要があるのでしょうか?
powershell - PowerShell Start-Job と Oracle
Start-Job を次のように指定して ps Run.ps1 を呼び出す ps スクリプト (Set-Data.ps1 など) があります。 Start-Job -FilePath Run.ps1 -ArgumentList 1, 2
Run.ps1 には、次のようなコード行があります。
コマンドプロンプトから実行しますSet-Data.ps1.
プログラムは行から「2」を出力しません ==> Write-Output "2";
ジョブの統計は、実行中として表示され続けます。
これはなぜですか?
powershell - Powershell のバックグラウンド ジョブ
パラメータ付きの .exe であるバックグラウンドでジョブを実行しようとしていますが、宛先にスペースが含まれています。例えば:
これをパラメータで実行したい:
それがこれを行うことは知ってStart-Job
いますが、さまざまな組み合わせをたくさん試しましたが、空白またはパラメーターが原因でエラーが発生します。誰かがここで構文を手伝ってくれますか? $exec
これは構成ファイルの一部であり、後で変更される可能性があるため、実行可能ファイルのパスである と想定する必要があります。