問題タブ [quest]
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 - powershell sort-object が期待どおりに機能しない
ここで、sort-objectコマンドレットを使用してプロセスをIDでソートしようとしました:
そしてそれはうまくいきます。私が見つけた他の例では、並べ替えは正常に機能しますが、このワンライナーで Active Directory から従業員 ID で従業員を並べ替えようとすると、次のようになります。
私はこのようなものを得る:
powershell - Quest コマンドレットを並行して実行し、出力をファイルに保存します
私は Powershell にかなり慣れていないので、コードの並列実行にほとんど問題はありません。私の現在のコードは順番に動作しますが、これまでのところ、並列に実行しようとする試みはすべて失敗しました。これが私がやろうとしていることです:
必要なすべての情報を収集するために、複数のドメイン コントローラーにクエリを実行する必要があります (Quest コマンドレットから get-qaduser などを使用します)。現在、1 つのドメイン コントローラから別のドメイン コントローラに接続しているため、スクリプトの実行に時間がかかります。私の考えは、PS 3.0 の新しいワークフロー機能を使用することでしたが、結果をファイルにエクスポートすることは明らかに許可されていません。
作業スクリプト (順番に):
これが私がこれまでに試したことです:
しかし、実行中に次のエラーメッセージが表示されます:
そこで、ワークフローにスニペットを追加することを考えました。
それらを追加するだけでは機能しません。inlinescript コマンドを使用しても、get-QADUser が実行されるスレッドに渡されません。また、プロファイルからスナップインを追加しようとしましたが、ワークフローはそれを無視します。
Technet で、組み込みのコマンドレットでは実際に機能するが、Quest ツールでは機能しないこの関数を見つけました。ForEach-Parallel.ps1 関数はクリーンな実行空間を使用します (ワークフローもそうすると思います)。
これを実行しようとした方法は次のとおりです。
しかし、出力が得られません-エラーメッセージも何もありません。| なしでコードを実行する invoke-expression が機能し、ファイルの内容が表示されます。私は何を間違っていますか?
私がやりたいことは、Quest コマンドレットを並行して実行することだけです。どんな助けでも大歓迎です!
powershell - PowerShell - Get-QADUser = 'System.OutOfMemoryException'
MS AD を更新し、エラーを txt ファイルに出力するために MySQL クエリを実行しています。コードは正常に動作しますが、数分後に「System.OutOfMemoryException」というエラーが発生します。
以下はコードの短い部分です。
これは、コードがすべての DB を取得し、それをメモリに保持しようとしたためだと思います。ForEach-Object はメモリがいっぱいになるのを防ぐと思いますが、それはロジックをサポートしていないようです。[System.GC]::Collect() を IF ステートメント内に追加しようとしましたが、RAM の増加を止めることはできません。
powershell - powershell get-qadcomputer + wmi クエリ
誰か使い方教えてください
以下の私のスクリプトで。(get-qadcomputerビットで失敗するだけのテキストファイルで動作させることができます)
powershell - すべてのドメインをループして pwd-access denied SET-QADUSER を変更する
複数のドメインと、それぞれに 1 つの管理者アカウントがあります。各ドメインにログインして毎月パスワードを変更するのは大変な作業です。そのため、すべてのドメインに接続して、パスワードを既に変更したかどうか、またはまだ古いパスワードを使用しているかどうかを確認するスクリプトを作成しました。古いものを使用している場合、スクリプトはそれを更新する必要があります。
ドメインに(順番に)接続します
$oldcredentials との接続に成功したら、pwd を変更しようとします
セキュリティで保護された文字列を SET-QADUSER に正しく渡していないと推測していますが、それを行う別の方法に関するドキュメントは見つかりませんでした。
ご意見をお聞かせください:)
powershell - Powershell 2.0 - メモリ リーク
だからここに私がやろうとしていることの範囲があります:
複数のサイトにある Windows コンピューターのリモート コンピューター情報を取得し、見つかった情報を Active Directory の各コンピューター オブジェクトの .Description プロパティに書き込みます。スクリプトがリモート コンピューターに接続できない場合は、その情報をテキスト ファイルに記録し、接続できないコンピューター オブジェクトに変更を加えないでください。
スクリプトの実行にかかる時間を測定するために、実行時間を測定する 2 つ目のスクリプトを用意しました。
このセットアップは、Windows 7 Pro 仮想マシン上のバッチ ファイルを介して実行される 2 番目のスクリプト (最初のスクリプトを呼び出す) を実行するためのスケジュールされたタスクとして設定されています。
私の問題は、ログに表示される情報に基づいて、スクリプトでメモリの問題が発生している可能性があることです。根本的な原因を診断する可能性のあるヘルプは、非常に高く評価されます。これ以上の別れはありませんが、これが両方のスクリプトのコードと、奇妙なログ出力のサンプルです。
メイン スクリプト (スクリプト 1):
2 番目のスクリプト:
私の環境の Active Directory での結果では、これは数百のオブジェクトに対して効果的に機能しますが、ログ ファイルに表示される内容のサンプルを次に示します。
パソコンに接続できませんでした computer391 パソコンに接続できません computer392 パソコンに接続できません computer393 パソコンに接続できません computer394 䔊數畣楴湯吠浩㩥ㄠ㨱㘰㈺⸱㜵㤵㐰ഷ</p>
文字化けした最後の行は、おそらくメモリ関連の問題があると私に思わせたものです。コンピューターの数がはるかに少ないコンテナー/OU に対してスクリプトを実行すると、ログの最後の行は時間であり、これは通常予想されることです。
経験豊富な Powershell のプロがここでアドバイスを提供できる場合は、本当に助けていただければ幸いです。
ありがとう!