Jeg ønsket å få en liste over alle nettene i en webapplikasjon. Ved et uhell skrev jeg følgende:
$webapp = "http://mywebapp" $webapp | Get-SPSite | Get-SPWeb
Så dette ga fantastiske resultater og ga meg nettadressene til hvert nett i nettappen. Men powershell-kommandoen gir ikke mening for meg.
Jeg mente faktisk å skrive noe sånt som:
$webapp = "http://mywebapp" Get-SPWebApplication $webapp | Get-SPSite | Get-SPWeb
som gir det samme resultater. Tar det bare nettadressen til pålydende verdi og antar intelligent at den er en nettadresse? Jeg gjetter at det konverterer det til et SPWebApplication-objekt, og rør det til Get-SPSite, som får hvert nettstedssamlingsobjekt i nettappen osv.
Svar
Rørledningen overfører ett objekt av en kommando til et annet. Resultatet av den første kommandoen er en inngang for neste kommando.
Så i eksempelet ditt Den første kommandoen Generert liste over SPWebApplication
som sendes til Get-SPSite
etc
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
Fra technet-artikkelen til Get-SPSite
– Get-SPSite cmdlet
returnerer enten et enkelt nettsted som samsvarer med identitetsparameteren , eller alle nettstedene som samsvarer med filterparameteren for det angitte omfanget. Omfanget er WebApplication
, ContentDatabase
og SiteSubscription
parametere. Hvis ingen av disse omfangene er gitt, vil omfanget er gården. Hvis omfanget er spesifisert uten filterparameter, returneres alle nettsteder i dette omfanget.
Så det kan røres fra SPWebApplication
, SPContentDatabase
og SPSiteSubscription
Get-SPContentDatabase | Get-SPSite
Kommentarer
- Så dette er min forvirring: det er flere inngangsparametere for SPSite som kan ta " URL ". Hvordan vet det pipede SPS-nettstedet om jeg spesifiserer for SPSite ' s -WebApplication-parameteren i stedet for -Identity-parameteren?
- Jeg tror det som kan hjelpe hvis technet ' s definisjoner hadde en " piped-innganger ". Hvis jeg endrer $ webapp-verdien til noe som ikke eksisterer ' t dvs. " mywebapp / nothing_here " det kaster en feil at den ikke finner et webapplikasjon på den url. Dette betyr for meg at det forventer en web-applikasjons url, selvfølgelig. Dette må dokumenteres på en eller annen måte i SPSite-artikkelen.
- @ferr Jeg har oppdatert svaret mitt
- ah! Takk skal du ha. jeg så det, men jeg var ikke ' ikke sikker på om det var det jeg lette etter, siden det ikke egentlig definerte hva det betydde med " Filterparameter ". Det ser ut til at det var det jeg mente med " Piped Inputs ".
- Leser det faktisk igjen, det ' er ikke filterparameteren, men " omfanget ". Er det et universelt begrep som brukes gjennom hele powershell? Jeg vil gjerne ha det hvis jeg kunne finne " Omfang " oppført på hvert objekt ' s technet-artikkel … for eksempel hvis du ser på Get-SPWeb-artikkelen, er det ingen omtale av omfang eller informasjon om hva du skal pipe til den.