2016-04-08 13 views
16

La maggior parte delle nostre applicazioni Web include uno script Powershell Deploy.ps1. Octopus Deploy utilizza questo per configurare le app durante le distribuzioni di produzione, ma lo usiamo anche per configurare le impostazioni locali IIS degli sviluppatori. Funziona perfettamente su Windows 7, Windows 8.1 e su tutti i nostri server di produzione Win2012.Perché Set-ItemProperty non ha effetto per le applicazioni IIS in Windows 10?

Non funziona su Windows 10, e questo sembra essere dovuto al fatto che il cmdlet Set-ItemProperty non ha alcun effetto. Nessun messaggio di errore o altro, semplicemente non fa nulla.

Il sito di IIS api.example.com esiste già, e stiamo usando PowerShell per creare l'applicazione/myapp e quindi modificare il percorso fisico dell'applicazione per D: \ Projects \ Demo

PS C:\> IIS: 
PS IIS:\> cd Sites\api.example.com 
PS IIS:\Sites\api.example.com> New-WebApplication myapp -site api.example.com -PhysicalPath C:\inetpub\wwwroot 

Name    Application pool Protocols Physical Path 
----    ---------------- --------- ------------- 
myapp   DefaultAppPool  http   C:\inetpub\wwwroot 

PS IIS:\Sites\api.example.com> set-itemproperty myapp -name PhysicalPath -value D:\Projects\Demo 

PS IIS:\Sites\api.example.com> get-itemproperty myapp 

Name    Application pool Protocols Physical Path 
----    ---------------- --------- ------------- 
demo    DefaultAppPool  http   C:\inetpub\wwwroot 

               ^THIS IS WRONG! 

Esecuzione del esattamente lo stesso set di comandi su Windows 7, si ottiene un output identico ma all'ultimo passo della proprietà PhysicalPath è cambiato come previsto:

PS IIS:\Sites\api.example.com> get-itemproperty myapp 

Name    Application pool Protocols Physical Path 
----    ---------------- --------- ------------- 
demo    DefaultAppPool  http   D:\Projects\Demo 

Qualsiasi idea di cosa sta succedendo? C'è qualche nuova limitazione di amministrazione su IIS10? Alcuni tipi di autorizzazioni extra elevate devo modificare le impostazioni su applicazioni Web esistenti o qualcosa del genere?

UPDATE: Sembra funzionare correttamente se l'elemento è un sito IIS, ma non riesce se l'elemento è un'applicazione Web, il che mi chiede se questo potrebbe essere solo un bug nel provider. Qualche idea?

+0

È un bug, per favore vota. https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/15077202-make-propties-name-case-insensitive-for-creating – zerocool18

risposta

15

Non so perché ma la prima lettera della proprietà che si desidera impostare deve essere minuscola e. g. physicalPath

Ciò funzionerà:

set-itemproperty myapp -name physicalPath -value D:\Projects\Demo 

sembra un bug per me, ma questa notazione (prima lettera minuscola) funziona anche per l'altra ambienti Windows così dovrebbe essere una soluzione valida.

-1

questo funziona per me (senza Set-Location):

Set-ItemProperty IIS:\sites\$sitename\$appName -Name applicationPool -Value $appPoolName 
3

sono stato in grado di replicare il problema. Set-ItemProperty ha funzionato per me se stavo lavorando su un sito.

Questi cmdlet provengono dal modulo WebAdministration e ho controllato la documentazione completa. Sembra che utilizzino solo siti Web negli esempi pertinenti. È anche possibile controllare lo stesso, se non l'hai già, qui: Web Administration (IIS) Provider for Windows PowerShell

Come hai indicato, forse un bug. Raccomanderei di segnalarlo qui: Microsoft Connect - PowerShell

+0

Connect viene sostituito con https://windowsserver.uservoice.com/forums/ 301.869-powershell –

Problemi correlati