問題タブ [select-object]
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 にエラーをスローさせたいのですが、代わりに出力として空の列を取得します。例:
によって複数のテキスト ファイルをインポートするスクリプトを作成しましたImport-Csv
が、それらのファイルのヘッダーが変更される可能性があり、空の列がシステムに読み込まれてしまいます。
編集:これは、ヘッダーが一致するかどうかを確認する方法です:
それがPowerShellの仕組みであることは知っていSet-StrictMode
ますが、@Mattが述べたように、ドキュメントは実際には少し誤解を招くものでした。Select-Object
「-NoNewImplicitProps」または「-ReadOnlyPipeline」スイッチがあればいいのにと思います:) 。答えてくれてありがとう。
powershell - Powershell 選択オブジェクトが空です
FolderPath
次のような Exchange メールボックスを取得しようとしています。
これにより、次の出力が得られます。
それは良いことですが、1 つのメールボックスを取得しようとするとFolderPath
、空の出力が返されます。
Format-Table は正しい出力を返します。
Select-Object
コマンドレットで正しい出力を取得できますか? 違いはなんですか?
powershell - PowerShell でテーブルをカスタム オブジェクトに変換する
特定の形式の変数にテーブルがあります (csv に似ています)
それをオブジェクトの配列に変換する方法に関する提案はありますか? select-object を試しましたが、実際には実行しません。
ありがとう
regex - Select-String からキャプチャされたグループを取得するには?
Powershell (バージョン 4) を使用して、Windows 上の一連のファイルからテキストを抽出しようとしています。
ここまでは順調ですね。これにより、適切なMatchInfo
オブジェクトのセットが得られます。
次に、キャプチャがmatchesメンバーにあることがわかったので、それらを取り出します:
これにより、次のことが得られます。
またはリストとして| Format-List
:
ここで停止します。さらに進んで、キャプチャされたグループ要素のリストを取得する方法がわかりません。
別の を追加してみまし| ForEach-Object -MemberName Groups
たが、上記と同じものを返すようです。
私が得る最も近い| Select-Object -Property Groups
ものは、実際に私が期待するもの(セットのリスト)を提供します:
しかし、それらのそれぞれからキャプチャされたグループを抽出することはできません。私| Select-Object -Index 1
はそれらのセットの 1 つだけを取得しようとしました。
更新:可能な解決策
追加すること| ForEach-Object { $_.Groups.Groups[1].Value }
で探していたものが得られたようですが、その理由がわかりません。そのため、このメソッドをファイルのセット全体に拡張したときに正しい結果が得られるかどうかはわかりません。
なぜ機能しているのですか?
補足として、これ| ForEach-Object { $_.Groups[1].Value }
(つまり、2 番目の なし.Groups
) は同じ結果になります。
さらに試してみると、パイプを削除することでコマンドを短縮できるよう| Select-Object -Property Groups
です。
powershell - PowerShell スクリプトで特定のハッシュテーブル値を選択して他の値をインラインで変更するにはどうすればよいですか
パイピングまたはその他の種類のインライン表記を使用して、ハッシュ テーブル内の特定の値を結果に直接「選択」し、他の値を変更または設定したいと考えています。
ハッシュ表
次のようなハッシュテーブル(率直に言って、オブジェクトのように使用されています)から始めています。
Select-Object コマンドレット (またはそれに類するもの) を使用して、特定のプロパティの値を設定し、他のプロパティを通過させる方法はありますか? 私はこれで終わりたいと思います:
インラインにする必要がない/したくない場合は、次の値を設定するだけですResult
。
インライン ソリューションの場合、次のForeach-Object
ように常に使用できます。
または、部分式で $hash を直接参照するだけです。
ただし、1 つのハッシュ テーブルのみを処理している場合に使用するのは無意味に思えます。Foreach-Object
とにかく通過させたいプロパティを 2 回言及するのは非常に冗長であり、$hash
変数が$aSignificantlyLongerHashTableVariableName
.
Powershell オブジェクトを使用していた場合...
このようなオブジェクトを使用していた場合:
select-object
次のようにコマンドレットを使用します。
その結果、
Hashtable と PSObject にはいくつかの類似した側面 (名前付きの方法で他のものを含むもの) がありますが、私の知る限り、それらは互換性がありません -Select-Object
私がここでやろうとしていることにより近い代替手段はありますか?
powershell - Select-Object -Unique および MemberTypes
より大きなスクリプトの一部として、インフラストラクチャ内のすべてのサーバーを含むサーバー名の参照リストを作成しています。これを行うには、異なるシステム (AD、SQL など) から取得したサーバー名を持つ 4 つのアレイがあり、次を使用して結合する予定です。
これはほとんどの場合、結果のリストに重複がいくつか見られますが、収集できるものから、SQL $var の .Name プロパティの MemberType が Property であるのに対し、他の変数の Name の MemberType は NoteProperty であるためです。 .
これが重複の原因ですか?もしそうなら、どうすればこれを解決できますか?
ありがとう。
powershell - Select-Object を使用してインポートされたサーバーのリストから変数を設定する
$ServerList
現在、動作する以下のスクリプトがありますが、30 を超えるサーバーがあり、頻繁に変更されるため、各サーバーからのインポート データで変数を更新する簡単な方法があるかどうかを知りたいと思いました。サーバー パスは同じで、Server.txt
すべてのサーバー名を含むファイルを維持できます。PowerShellスクリプトに行を追加することなく、必要に応じて更新できるサーバーのより大きなリストで動作するようにこれを簡素化する方法についてのアイデアはありますか?
powershell - Powershell: カスタム オブジェクトを CSV ファイルにエクスポートする - Select-Object を使用して単一のプロパティ値を抽出する
カスタム オブジェクトを作成して CSV ファイルにエクスポートするスクリプトを作成しました。
結果の CSV ファイルのデータ行は次のとおりです。
"@{AgentVersion=9.4.112.22}","@{$ .LastWriteTime=5/6/2016 6:02:32 AM}","@{$ .LastWriteTime=7/5/2016 8:34:01 PM }"
@{<name>=...}
不要なラッパーを取り除くことは可能ですか?