Jeg ønskede at få en liste over alle webs i en webapplikation. Ved et uheld skrev jeg følgende:
$webapp = "http://mywebapp" $webapp | Get-SPSite | Get-SPWeb
Så dette returnerede fantastiske resultater, hvilket gav mig webadresserne til hvert web i webappen. Men powershell-kommandoen giver ikke mening for mig.
Jeg mente faktisk at skrive noget som:
$webapp = "http://mywebapp" Get-SPWebApplication $webapp | Get-SPSite | Get-SPWeb
som producerer det samme resultater. Tager det bare url til pålydende værdi og antager intelligent, at det er en webapp-url? Jeg gætter på, at det konverterer det til et SPWebApplication-objekt, og rør det til Get-SPSite, som får hvert stedssamlingsobjekt i webappen osv.
Svar
Rørledningen overfører et objekt fra en kommando til et andet. Resultatet af den første kommando er et input til den næste kommando.
Så i dit eksempel Den første kommando Genereret liste over SPWebApplication
som sendes til Get-SPSite
osv.
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-artiklen i Get-SPSite
– Get-SPSite cmdlet
returnerer enten et enkelt sted, der matcher identitetsparameteren eller alle de websteder, der matcher filterparameteren for det angivne omfang. Omfanget er WebApplication
, ContentDatabase
og SiteSubscription
parametre. Hvis ingen af disse anvendelsesområder er angivet, vises anvendelsesområdet er gården. Hvis omfanget er angivet uden filterparameter, returneres alle websteder i dette omfang.
Så det kan piperes fra SPWebApplication
, SPContentDatabase
og SPSiteSubscription
Get-SPContentDatabase | Get-SPSite
Kommentarer
- Så dette er min forvirring: der er flere inputparametre til SPSite, der kan tage " URL ". Hvordan ved det pipede SPSite, om jeg angiver SPSite ' s -WebApplication-parameter i stedet for -Identity-parameteren?
- Jeg tror, hvad der kan hjælpe, hvis technet ' s definitioner havde en " piped-input " sektion. Hvis jeg ændrer $ webapp-værdien til noget, der ikke findes ' t, dvs. " mywebapp / nothing_here " det kaster en fejl, at det ikke kan finde en webapplikation på den url. Dette betyder for mig, at det selvfølgelig forventer en webapplikations url. Dette skal dokumenteres på en eller anden måde i SPSite-artiklen.
- @ferr Jeg har opdateret mit svar
- ah! tak skal du have. Jeg så det, men jeg var ikke ' ikke sikker på, om det var det, jeg ledte efter, da det ikke rigtig definerede, hvad det betød med " Filterparameter ". Det ser ud til, at det var det, jeg mente med " Rørede indgange ".
- Faktisk læser det igen, det ' er ikke filterparameteren, men " omfanget ". Er det et universelt udtryk, der bruges i hele powershell? Jeg vil gerne have det, hvis jeg kunne finde " Omfang " angivet på hvert objekt ' s technet-artikel … for eksempel, hvis du ser på Get-SPWeb-artiklen, nævnes der ikke rækkevidde eller nogen information om, hvad der skal røres til den.