PSCustomObjectではなく生のタイプ(例えばString)を返すSelect-Objectを取得する方法は?

StackOverflow https://stackoverflow.com/questions/618749

  •  03-07-2019
  •  | 
  •  

質問

次のコードはPSCustomObjectsの配列を提供しますが、それを取得して文字列の配列を返すにはどうすればよいですか?

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

次のコードはPSCustomObjectsの配列を提供しますが、それを取得して文字列の配列を返すにはどうすればよいですか?

<*>

(二次的な質問として、psiscontainerの部分は何ですか?オンラインの例からコピーしました)

承認後の編集: 2つのすばらしい答えです。両方にマークを付けられればと思います。元の答えを与えました。

.psiscontainer)}

(二次的な質問として、psiscontainerの部分は何ですか?オンラインの例からコピーしました)

承認後の編集: 2つのすばらしい答えです。両方にマークを付けられればと思います。元の答えを与えました。

役に立ちましたか?

解決

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

foreach {'hello'; 

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

foreach {'hello'; 

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

foreach {'hello'; 

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

Get-ChildItem $directory -Recurse

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

Select-Object FullName

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.psiscontainer)} | foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

<*>

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.FullName}

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.psiscontainer)}

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.psiscontainer)} | foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

<*>

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.FullName}

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.FullName}

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.psiscontainer)} | foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

<*>

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.FullName}

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.psiscontainer)}

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.psiscontainer)} | foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

<*>

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.FullName}

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.FullName; 1; 2; 3}

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.psiscontainer)} | foreach {

必要なプロパティをオブジェクトから選択するだけです。この場合、 FullName

<*>

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.FullName}

編集:マークの説明、誰が尋ねるのか、&quot; foreachは何をしますか?その列挙は何ですか?&quot;

Sung Meisterの説明は非常に優れていますが、役立つ可能性があるため、ここにウォークスルーを追加します。

重要な概念はパイプラインです。細いチューブを次々と転がる一連のピンポンボールを想像してください。これらは、パイプライン内のオブジェクトです。パイプラインの各段階(パイプ(|)文字で区切られたコードセグメント)には、パイプが入り、パイプが出ます。 1つのステージの出力は、次のステージの入力に接続されます。各ステージは、到着したオブジェクトを受け取り、処理を行い、それらを出力パイプラインに送り返すか、新しい置換オブジェクトを送り出します。

<*>

Get-ChildItemは、ファイルシステムを調べて、検出した各ファイルとディレクトリを表すFileSystemInfoオブジェクトを作成し、それらをパイプラインに入れます。

<*>

Select-Objectは、到着した各FileSystemInfoオブジェクトを取得し、FullNameプロパティ(この場合はパス)を取得し、作成した新しいカスタムオブジェクトにそのプロパティを配置し、そのカスタムオブジェクトを出力しますパイプライン。

<*>

これはフィルターです。各オブジェクトを取得して検査し、条件に応じて送信または破棄します。ちなみに、ここのコードにはバグがあります。ここに到着するカスタムオブジェクトには、psiscontainerプロパティがありません。この段階では実際には何もしません。 Sung Meisterのコードの方が優れています。

<*>

ForEach-Objectという長い名前のForeachは、到着した各オブジェクトを取得し、ここから文字列であるFullNameプロパティを取得します。さて、ここに微妙な部分があります:消費されない、つまり変数によってキャプチャされないか、何らかの方法で抑制されない値は、出力パイプラインに入れられます。実験として、この段階を次のように置き換えてみてください:

<*>

実際に試してみて、出力を調べてください。そのコードブロックには4つの値があります。それらのどれも消費されません。これらはすべて出力に表示されることに注意してください。これを試してください:

<*>

値の1つが変数によってキャプチャされていることに注意してください。出力パイプラインには表示されません。

.psiscontainer)}

他のヒント

ファイル名の文字列を取得するには、使用できます

$files = Get-ChildItem $directory -Recurse | Where-Object {!(

ファイル名の文字列を取得するには、使用できます

<*>

-ExpandProperty パラメーターを使用すると、指定されたプロパティのタイプに基づいてオブジェクトを取得できます。

さらにテストした結果、これはV1では機能しなかったが、その機能はV2 CTP3で修正された。

.psiscontainer)} | Select-Object -ExpandProperty FullName

-ExpandProperty パラメーターを使用すると、指定されたプロパティのタイプに基づいてオブジェクトを取得できます。

さらにテストした結果、これはV1では機能しなかったが、その機能はV2 CTP3で修正された。

質問#1の場合

&quot; select-object&quot;を削除しました部分-冗長であり、「どこ」に移動しました「foreach」の前にフィルターをかけます。 dangphの回答-できるだけ早くフィルタリングして、次のパイプラインで処理する必要があるもののサブセットのみを処理するようにします。

$files = Get-ChildItem $directory -Recurse | Where-Object {!

質問#1の場合

&quot; select-object&quot;を削除しました部分-冗長であり、「どこ」に移動しました「foreach」の前にフィルターをかけます。 dangphの回答-できるだけ早くフィルタリングして、次のパイプラインで処理する必要があるもののサブセットのみを処理するようにします。

>pushd HKLM:\SOFTWARE
>ls | gm

コードスニペットは基本的に

  • すべてのファイルの全パスを再帰的に取得(Get-ChildItem $ directory -Recurse)
  • ディレクトリの除外(Where-Object {!$ _。PsIsContainer})
  • 完全なファイル名のみを返す(foreach {$ _。FullName})
  • すべてのファイル名を$ filesに保存します

foreach {$ _。FullName} の場合、powershellでは、スクリプトブロック({...})の最後のステートメントが返されます。この場合、タイプ文字列の$ _。FullName

生のオブジェクトを本当に取得する必要がある場合は、「select-object」を削除した後に何もする必要はありません。 Select-Objectを使用するが生のオブジェクトにアクセスする場合は、「PsBase」を使用します。これはまったく異なる質問です(トピック)-&quot; PSBASE、PSEXTENDED、PSADAPTED、およびPSOBJECTの最新情報&quot;そのテーマの詳細については

質問#2の場合

また、!$ _。PsIsContainer によるフィルタリングは、コンテナレベルのオブジェクトを除外することを意味します-あなたの場合、 Get-ChildItem > FileSystem プロバイダー(Get-PsProviderを介してPowerShellプロバイダーを表示できます)ので、コンテナーは DirectoryInfo (フォルダ)

PsIsContainer は、異なるPowerShellプロバイダーの下で異なることを意味します。 例)レジストリプロバイダーの場合、PsIsContainerのタイプは Microsoft.Win32.RegistryKey これを試してください:

get-help foreach

[UPDATE] から次の質問へ: foreachは何をしますか?その列挙は何ですか? 明確にするために、「foreach」 &quot; Foreach-Object&quot;のエイリアスです。 見つけることができます

get-alias foreach

-または-

<*>

今、私の答えでは、「foreach」タイプ FileInfo の各オブジェクトインスタンスを列挙しています前のパイプ(フィルターされたディレクトリがあります)。 FileInfo には FullName というプロパティがあり、これが&quot; foreach&quot;列挙中です。
そして、&quot; $ _&quot;という特別なパイプライン変数を介してパイプラインを介して渡されたオブジェクトを参照しますこれは、&quot; foreach&quot;のスクリプトブロックコンテキスト内の FileInfo タイプです。

.PsIsContainer} | foreach {

質問#1の場合

&quot; select-object&quot;を削除しました部分-冗長であり、「どこ」に移動しました「foreach」の前にフィルターをかけます。 dangphの回答-できるだけ早くフィルタリングして、次のパイプラインで処理する必要があるもののサブセットのみを処理するようにします。

<*>

コードスニペットは基本的に

  • すべてのファイルの全パスを再帰的に取得(Get-ChildItem $ directory -Recurse)
  • ディレクトリの除外(Where-Object {!$ _。PsIsContainer})
  • 完全なファイル名のみを返す(foreach {$ _。FullName})
  • すべてのファイル名を$ filesに保存します

foreach {$ _。FullName} の場合、powershellでは、スクリプトブロック({...})の最後のステートメントが返されます。この場合、タイプ文字列の$ _。FullName

生のオブジェクトを本当に取得する必要がある場合は、「select-object」を削除した後に何もする必要はありません。 Select-Objectを使用するが生のオブジェクトにアクセスする場合は、「PsBase」を使用します。これはまったく異なる質問です(トピック)-&quot; PSBASE、PSEXTENDED、PSADAPTED、およびPSOBJECTの最新情報&quot;そのテーマの詳細については

質問#2の場合

また、!$ _。PsIsContainer によるフィルタリングは、コンテナレベルのオブジェクトを除外することを意味します-あなたの場合、 Get-ChildItem > FileSystem プロバイダー(Get-PsProviderを介してPowerShellプロバイダーを表示できます)ので、コンテナーは DirectoryInfo (フォルダ)

PsIsContainer は、異なるPowerShellプロバイダーの下で異なることを意味します。 例)レジストリプロバイダーの場合、PsIsContainerのタイプは Microsoft.Win32.RegistryKey これを試してください:

<*>

[UPDATE] から次の質問へ: foreachは何をしますか?その列挙は何ですか? 明確にするために、「foreach」 &quot; Foreach-Object&quot;のエイリアスです。 見つけることができます

<*>

-または-

<*>

今、私の答えでは、「foreach」タイプ FileInfo の各オブジェクトインスタンスを列挙しています前のパイプ(フィルターされたディレクトリがあります)。 FileInfo には FullName というプロパティがあり、これが&quot; foreach&quot;列挙中です。
そして、&quot; $ _&quot;という特別なパイプライン変数を介してパイプラインを介して渡されたオブジェクトを参照しますこれは、&quot; foreach&quot;のスクリプトブロックコンテキスト内の FileInfo タイプです。

.FullName}

コードスニペットは基本的に

  • すべてのファイルの全パスを再帰的に取得(Get-ChildItem $ directory -Recurse)
  • ディレクトリの除外(Where-Object {!$ _。PsIsContainer})
  • 完全なファイル名のみを返す(foreach {$ _。FullName})
  • すべてのファイル名を$ filesに保存します

foreach {$ _。FullName} の場合、powershellでは、スクリプトブロック({...})の最後のステートメントが返されます。この場合、タイプ文字列の$ _。FullName

生のオブジェクトを本当に取得する必要がある場合は、「select-object」を削除した後に何もする必要はありません。 Select-Objectを使用するが生のオブジェクトにアクセスする場合は、「PsBase」を使用します。これはまったく異なる質問です(トピック)-&quot; PSBASE、PSEXTENDED、PSADAPTED、およびPSOBJECTの最新情報&quot;そのテーマの詳細については

質問#2の場合

また、!$ _。PsIsContainer によるフィルタリングは、コンテナレベルのオブジェクトを除外することを意味します-あなたの場合、 Get-ChildItem > FileSystem プロバイダー(Get-PsProviderを介してPowerShellプロバイダーを表示できます)ので、コンテナーは DirectoryInfo (フォルダ)

PsIsContainer は、異なるPowerShellプロバイダーの下で異なることを意味します。 例)レジストリプロバイダーの場合、PsIsContainerのタイプは Microsoft.Win32.RegistryKey これを試してください:

<*>

[UPDATE] から次の質問へ: foreachは何をしますか?その列挙は何ですか? 明確にするために、「foreach」 &quot; Foreach-Object&quot;のエイリアスです。 見つけることができます

<*>

-または-

<*>

今、私の答えでは、「foreach」タイプ FileInfo の各オブジェクトインスタンスを列挙しています前のパイプ(フィルターされたディレクトリがあります)。 FileInfo には FullName というプロパティがあり、これが&quot; foreach&quot;列挙中です。
そして、&quot; $ _&quot;という特別なパイプライン変数を介してパイプラインを介して渡されたオブジェクトを参照しますこれは、&quot; foreach&quot;のスクリプトブロックコンテキスト内の FileInfo タイプです。

V1の場合、プロファイルに次のフィルターを追加します。

filter Get-PropertyValue([string]$name) { 

V1の場合、プロファイルに次のフィルターを追加します。

gci . -r | ?{!

V1の場合、プロファイルに次のフィルターを追加します。

filter Get-PropertyValue([string]$name) { 

V1の場合、プロファイルに次のフィルターを追加します。

<*>

これを行うことができます:

<*>

ところで、 PowerShell Community Extensions を既に使用している場合。

V2でSelect-Object -Expandを使用する機能に関しては、これはかわいいトリックですが、明らかではなく、実際にはSelect-Objectや-Expandが意図したものではありません。 -Expandは、LINQのSelectManyとSelect-Objectが複数のプロパティをカスタムオブジェクトに投影することのように、すべてフラットにすることです。

.$name }

これを行うことができます:

<*>

ところで、 PowerShell Community Extensions を既に使用している場合。

V2でSelect-Object -Expandを使用する機能に関しては、これはかわいいトリックですが、明らかではなく、実際にはSelect-Objectや-Expandが意図したものではありません。 -Expandは、LINQのSelectManyとSelect-Objectが複数のプロパティをカスタムオブジェクトに投影することのように、すべてフラットにすることです。

.psiscontainer} | Get-PropertyName fullname

これを行うことができます:

<*>

ところで、 PowerShell Community Extensions を既に使用している場合。

V2でSelect-Object -Expandを使用する機能に関しては、これはかわいいトリックですが、明らかではなく、実際にはSelect-Objectや-Expandが意図したものではありません。 -Expandは、LINQのSelectManyとSelect-Objectが複数のプロパティをカスタムオブジェクトに投影することのように、すべてフラットにすることです。

.$name }

これを行うことができます:

<*>

ところで、 PowerShell Community Extensions を既に使用している場合。

V2でSelect-Object -Expandを使用する機能に関しては、これはかわいいトリックですが、明らかではなく、実際にはSelect-Objectや-Expandが意図したものではありません。 -Expandは、LINQのSelectManyとSelect-Objectが複数のプロパティをカスタムオブジェクトに投影することのように、すべてフラットにすることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top