Blog Relocation - Reminder
This blog has moved, please update your links:
RSS Feed: http://feeds.feedburner.com/ShayLevy
New Blog URL: http://PowerShay.com
-Shay
If you repeat it [$CRIPT] it!
This blog has moved, please update your links:
RSS Feed: http://feeds.feedburner.com/ShayLevy
New Blog URL: http://PowerShay.com
-Shay
Posted by Shay Levy at 7/22/2008 12:21:00 AM 0 comments
My blog is moving to Microsoft's Israel blogs community. The new RSS feed is:
http://feeds.feedburner.com/ShayLevy
New posts will be published here: http://blogs.microsoft.co.il/blogs/ScriptFanatic/
Please update your feed reader.
-Shay
Posted by Shay Levy at 7/07/2008 12:22:00 AM 0 comments
Microsoft is offering Introducing SQL Server 2008 by Peter DeBetta for free. Learn about major new features in SQL Server 2008 including security, administration, and performance.
Posted by Shay Levy at 7/06/2008 10:37:00 PM 0 comments
The second CTP of the IIS7 Powershell provider has released bumping up the total number of cmdlets to 55!
After you download and install the provider you can start exploring it with the pre-built PowerShell console file:
Click on the Start Menu -> "All Programs" -> "IIS 7.0 Extensions" -> "IIS PowerShell Management Console".
The prompt of the new PowerShell command window is set to "IIS:\" - the root of the IIS Provider namespace.
In the example below I'm loading the provider snap-in (manually) into my current PowerShell session.
# find the IIS snap-in name
PS > Get-PSSnapin -RegisteredName : IIsProviderSnapIn
PSVersion : 1.0
Description : IIS Administration Provider
# load the snap-in
PS > Add-PSSnapin IIsProviderSnapIn
# get a list off all cmdlets name in the provider
PS > Get-Command -PSSnapin IIsProviderSnapIn | select nameName
----
Add-WebConfiguration
Add-WebConfigurationProperty
Backup-WebConfiguration
Begin-CommitDelay
Clear-FrebData
Clear-WebConfiguration
ConvertTo-WebApplication
Disable-Freb
Disable-WebModule
Enable-Freb
Enable-WebModule
End-CommitDelay
Get-AppDomain
Get-AppPoolState
Get-ConfigurationBackup
Get-URL
Get-WebConfiguration
Get-WebConfigurationProperty
Get-WebHandler
Get-WebItemState
Get-WebModule
Get-WebRequest
Get-WebSiteState
New-AppPool
New-FtpSite
New-ManagedWebModule
New-VirtualDirectory
New-WebApplication
New-WebBinding
New-WebHandler
New-WebModule
New-WebSite
Remove-AppPool
Remove-ConfigurationBackup
Remove-VirtualDirectory
Remove-WebApplication
Remove-WebBinding
Remove-WebConfigurationProperty
Remove-WebHandler
Remove-WebModule
Remove-WebSite
Restart-AppPool
Restart-WebItem
Restore-WebConfiguration
Set-WebBinding
Set-WebConfiguration
Set-WebConfigurationProperty
Set-WebHandler
Set-WebModule
Start-AppPool
Start-WebItem
Start-WebSite
Stop-AppPool
Stop-WebItem
Stop-WebSite
To navigate the namespace simply set your location to the root of the IIS Provider namespace, now you can navigate using the get-childitem (dir for short):
PS > cd iis: PS > dir Name ---- Sites AppPools SslBindings
One thing I've noticed is the lack of command completion when navigating the provider hierarchy. For example, cd si<tab> or dir iis:\si<tab> doesn't resolve to the sites container. Only after manually executing 'dir iis:\sites' the list of sites became available for upcoming dir requests.
To get a list of web sites we list the sites container which returns a site collection:
PS > dir iis:\sites
Name ID State Physical Path Bindings ---- -- ----- ------------- -------- Default Web Site 1 Started %SystemDrive%\inetpub\wwwroot http *:80: test1 2 Started http *:80:test1 test2 3 Started http *:80:test2
The same applies for the AppPool container. It can be quiet long to type this each time you want to get all (or even one) web sites or app pools. I excepted to find corresponding cmdlets such as Get-WebSite or Get-AppPool but there are no.
PS > get-command -noun appp* -pss iis* | select name CommandType Name ----------- ---- Cmdlet Get-AppPoolState Cmdlet New-AppPool Cmdlet Remove-AppPool Cmdlet Restart-AppPool Cmdlet Start-AppPool Cmdlet Stop-AppPool PS > get-command -noun webs* -pss iis* | select name CommandType Name ----------- ---- Cmdlet Get-WebSiteState Cmdlet New-WebSite Cmdlet Remove-WebSite Cmdlet Start-WebSite Cmdlet Stop-WebSite
You can overcome the absence of this cmdlets by defining your own functions to get this objects:
PS > function Get-WebSite($name='*') {Get-Item IIS:\Sites\$name}
PS > function Get-AppPool($name='*') {Get-Item IIS:\AppPools\$name} # get all websites PS 153> Get-WebSite Name ID State Physical Path Bindings ---- -- ----- ------------- -------- Default Web Site 1 Started %SystemDrive%\inetpub\wwwroot http *:80: test1 2 Started http *:80:test1 test2 3 Started http *:80:test2
# get a website name using wildcards PS > Get-WebSite def* Name ID State Physical Path Bindings ---- -- ----- ------------- -------- Default Web Site 1 Started %SystemDrive%\inetpub\wwwroot http *:80:
OK, time to build a new site. There is a new cmdlet just for that:
PS > New-Website -name NewWebsite Name ID State Physical Path Bindings ---- -- ----- ------------- -------- NewWebsite 4 http *:80:NewWebsite New-WebSite : The object identifier does not represent a valid object.
Exception from HRESULT: 0x800710D8) At line:1 char:12 + New-Website <<<< -name NewWebsite
# the site was created but with an error. I'm not sure what is the
# cause so I logged a comment on that IIS.net forums # I found that if you assign the command to a # variable then the error is gone # e.g. $newSite = New-WebSite -name NewWebSite # despite the error the new site is up and running
PS > Get-WebSite new* Name ID State Physical Path Bindings ---- -- ----- ------------- -------- NewWebsite 4 Started http *:80:NewWebsite
Now lets try to remove it:
PS > Get-WebSite NewWebsite | Remove-WebSite PS > Get-WebSite Name ID State Physical Path Bindings ---- -- ----- ------------- -------- Default Web Site 1 Started %SystemDrive%\inetpub\wwwroot http *:80: test1 2 Started http *:80:test1 test2 3 Started http *:80:test2
PS 197> Get-WebSite new* | Remove-WebSite -Confirm Confirm Are you sure you want to perform this action? Performing operation "Remove-WebSite" on Target "NewWebsite". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend
[?] Help (default is "Y"):
You can get more information on PowerShell's common parameters by typing:
PS > help about_CommonParameters
That's it for now :)
Posted by Shay Levy at 7/04/2008 07:43:00 PM 1 comments
I got an email from Microsoft regarding the 2008 Microsoft MVP Award. I was chosen for the award in the Admin Frameworks category (Windows PowerShell).
What a day! What can I say. It feels like walking on the moon. It is an honor to be among the great guys. I would like to thank the people who supported me along the way and to Microsoft for the award.
PowerShell ROCKS!
Posted by Shay Levy at 7/01/2008 09:27:00 PM 11 comments
Labels: MVP, PowerShell
This little PowerShell script you can check how familiar you are with all the built-in aliases in PowerShell V2 CTP2.
For each alias there are 7 cmdlet names to choose from. There are 10 questions, and at the end of the quiz you can review your results and optionally run the quiz again.
You need to have PowerShell V2 CTP2 installed for the script to run.
Good luck :)
Posted by Shay Levy at 6/30/2008 10:03:00 PM 3 comments
Labels: PowerShell
SAPIEN Technologies has released a new COM component named ActiveXPoSH (included in PrimalScript 2007 script editor). It is a special PowerShell host that allow developers/scripters to run single cmdlets or entire scripts from VBScript/JScript code. The component is free for personal and commercial use.
You can find more details in this document and download it from here.
Posted by Shay Levy at 6/26/2008 01:55:00 PM 1 comments
Labels: PowerShell