Ich wollte eine Liste aller Websites in einer Webanwendung erhalten. Aus Versehen habe ich Folgendes geschrieben:
$webapp = "http://mywebapp" $webapp | Get-SPSite | Get-SPWeb
Dies lieferte fantastische Ergebnisse und gab mir die URLs jedes Webs in der Web-App. Aber der Powershell-Befehl macht für mich keinen Sinn.
Ich wollte eigentlich etwas schreiben wie:
$webapp = "http://mywebapp" Get-SPWebApplication $webapp | Get-SPSite | Get-SPWeb
, das dasselbe erzeugt Ergebnisse. Nimmt es nur die URL zum Nennwert und nimmt sie intelligent als „Web-App-URL“ an? Ich vermute, es konvertiert es in ein SPWebApplication-Objekt und leitet es an Get-SPSite weiter, das jedes Websitesammlungsobjekt in der Web-App usw. abruft.
Antwort
Die Pipeline übergibt ein Objekt eines Befehls an ein anderes. Das Ergebnis des ersten Befehls ist eine Eingabe für den nächsten Befehl.
In Ihrem Beispiel also der erste Befehl Generierte Liste von SPWebApplication
, die an Get-SPSite
usw.
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
Aus dem Technet-Artikel von Get-SPSite
– Die Get-SPSite cmdlet
gibt entweder eine einzelne Site zurück, die dem Identity-Parameter entspricht oder alle Sites, die mit dem Filter-Parameter für den angegebenen Bereich übereinstimmen. Die Bereiche sind WebApplication
, ContentDatabase
und SiteSubscription
-Parameter. Wenn keiner dieser Bereiche angegeben ist, wird der Umfang ist die Farm. Wenn der Bereich ohne Filterparameter angegeben wird, werden alle Sites in diesem Bereich zurückgegeben.
Er kann also von SPWebApplication
, und SPSiteSubscription
Get-SPContentDatabase | Get-SPSite
Kommentare
- Das ist also meine Verwirrung: Es gibt mehrere Eingabeparameter für SPSite, die " URL " annehmen können. Woher weiß die leitungsgebundene SPSite, ob ich für SPSite ' den Parameter -WebApplication anstelle des Parameters -Identity spezifiziere?
- Ich denke, was wäre hilfreich, wenn technet Die Definitionen von ' hatten einen " leitungsgebundenen Eingang ". Wenn ich den Wert von $ webapp in etwas ändere, das nicht ' existiert, dh " mywebapp / nothing_here " Es wird ein Fehler ausgegeben, dass unter dieser URL keine Webanwendung gefunden werden kann. Das bedeutet für mich, dass es natürlich eine Webanwendungs-URL erwartet. Dies muss irgendwie im SPSite-Artikel dokumentiert werden.
- @ferr Ich habe meine Antwort aktualisiert
- ah! Danke. Ich habe das gesehen, aber ich war mir nicht sicher, ob es das war, wonach ich gesucht habe, da es nicht wirklich definierte, was es mit " div meinte. ' > Filterparameter ". Es scheint, dass ich das mit " Piped Inputs " gemeint habe.
- Tatsächlich noch einmal lesen, es ' ist nicht der Filterparameter, sondern der Bereich " ". Ist das ein universeller Begriff, der in Powershell verwendet wird? Ich würde es mögen, wenn ich " Bereiche " finden könnte, die auf jedem Objekt ' s aufgeführt sind Technet-Artikel … Wenn Sie sich beispielsweise den Get-SPWeb-Artikel ansehen, werden weder Bereiche noch Informationen darüber erwähnt, was darauf weitergeleitet werden soll.