Webアプリケーション内のすべてのWebのリストを取得したかったのです。誤って次のように書いた:
$webapp = "http://mywebapp" $webapp | Get-SPSite | Get-SPWeb
これで素晴らしい結果が返され、Webアプリの各WebのURLがわかりました。しかし、powershellコマンドは私には意味がありません。
私は実際には次のようなものを書くつもりでした:
$webapp = "http://mywebapp" Get-SPWebApplication $webapp | Get-SPSite | Get-SPWeb
これは同じものを生成します結果。URLを額面どおりに受け取り、インテリジェントに「WebアプリのURL」と見なしますか?それをSPWebApplicationオブジェクトに変換し、それをGet-SPSiteにパイプして、Webアプリ内の各サイトコレクションオブジェクトなどを取得すると思います。
回答
パイプラインは、コマンドの1つのオブジェクトを別のオブジェクトに渡します。最初のコマンドの結果は、次のコマンドの入力になります。
この例では、最初のコマンドGet-SPSite
などに渡されるSPWebApplication
の生成されたリスト
http://technet.microsoft.com/en-us/library/ff607950%28v=office.15%29.aspx
http://blogs.catapultsystems.com/SSamuel/archive/2012/10/15/using-pipes-in-powershell-tip-1.aspx
Get-SPSite
のtechnet記事から-Get-SPSite cmdlet
は、Identityパラメーターに一致する単一のサイトを返します、または指定したスコープのFilterパラメーターに一致するすべてのサイト。スコープは、WebApplication
、ContentDatabase
、およびSiteSubscription
パラメータ。これらのスコープのいずれも提供されていない場合、スコープはファームです。スコープがFilterパラメーターなしで指定されている場合、そのスコープ内のすべてのサイトが返されます。
したがって、SPWebApplication
、、およびSPSiteSubscription
Get-SPContentDatabase | Get-SPSite
コメント
- これが私の混乱です。SPSiteには、" URL "を取ることができる複数の入力パラメーターがあります。パイプされたSPSiteは、SPSite 'の-Identityパラメーターではなく-WebApplicationパラメーターを指定しているかどうかをどのように認識しますか?
- technetの場合に役立つと思います'の定義には"パイプ入力"セクションがありました。 $ webappの値を、'存在しないもの、つまり" に変更した場合mywebapp / nothing_here "そのURLでWebアプリケーションが見つからないというエラーがスローされます。これは、もちろん、WebアプリケーションのURLを期待していることを意味します。これは、SPSiteの記事に何らかの形で文書化する必要があります。
- @ferr回答を更新しました
- ああ!ありがとうございました。それを見ましたが、" "フィルターパラメーター"。 "パイプ入力"が意味しているようです。
- 実際にもう一度読んで、'はフィルターパラメーターではなく、"スコープ"です。これは、PowerShell全体で使用される一般的な用語ですか?各オブジェクトにリストされている"スコープ"が見つかったらいいのですが' technetの記事…たとえば、Get-SPWebの記事を見ると、スコープについての言及も、それにパイプするものについての情報もありません。