Friday, August 19, 2011

Kuidas installeerida tarkvara PowerShelliga ja püüda kinni installatsiooni kood

Tegelen hetkel ConfigMgr Secondary saidi automaatse installatsiooniga ja selle käigus tekkis mul vajadus installatsiooni kood kinni püüda. VB skriptis kasutasin ma järgnevat käsku, et kood kinni püüda:

ReturnCode = WshShell.Run (InstallPackage,1, TRUE)

PowerShellis käib asi teisiti ja selles postituses näitan ühte varianti kuidas seda võiks teha. Selleks, et seda installatsiooni koodi kinni püüda tuleb kasutada

Start-Process command-letti. 

Näide

$Install = Start-Process $File -ArgumentList $Arguments -Wait -PassThru

Selle konkreetse näite puhul on oluline just kaks parameetrit: -Wait ja –PassThru. Kui te eemaldate –Wait, siis ei oodata käsu lõppu ja kui te eemaldate –PassThru, siis teie muutujasse $Install ei salvestata installatsiooni ExitCode omadust (Properties).

Kui te lasete ülal toodud näite käima ja peale tarkvara installatsiooni on teil käsk

Write-Host $Install.ExitCode , siis prinditaks teile ekraanile tagasi tulnud installatsiooni kood. Installatsiooni koodid sõltuvad rakendusest. 

Juhtum

Näiteks te soovite installeerida WSUSi (Windows Server Update Services) ja te soovite PowerShelliga installatsiooni kood kinni püüda ja kui installatsioon on edukas, siis soovite teha veel mingit seadistust. WSUSi automaatse installatsiooni kohta leiate rohkem infot nendest kohtadest:

· WSUSi installatsiooni Return Codes - http://technet.microsoft.com/en-us/library/dd939798(WS.10).aspx

· Rohkem infot Start-Process command-leti kohta saate lugeda siit - http://technet.microsoft.com/en-us/library/dd347667.aspx

· WSUSi installatsiooni juhend Technetis - http://technet.microsoft.com/en-us/library/cc720513(WS.10).aspx

Või lasete WSUS installatsiooni paketi käima parameetriga /?“. Peale seda avaneb teile kõik võimalikud parameetrid mida on võimalik kasutada WSUSi automaatse installatsiooni puhul

clip_image002


Install-Software PowerShelli funktsioon

Function Install-Software            
{
PARAM(
$File,
$Arguments
)

$Install = Start-Process $File -ArgumentList $Arguments -Wait -PassThru

If($Install.ExitCode -eq 0){
Write-Host "Installation was OK" -ForegroundColor GREEN
}
Else{

Write-Host "Installation failed $("$Install.ExitCode")" -ForegroundColor RED
}

}

Ja kui te lasete selle funktsiooni järgmiste parameetritega

Install-Software -file "C:\SCCM2007_Auto_Install\WSUS\WSUS30-KB972455-x64.exe" -Arguments '/q CONTENT_DIR="c:\WSUS" DEFAULT_WEBSITE=0 CONTENT_LOCAL=1'

Installeeritakse teile WSUS 3.0 SP2 lokaalselt. Kui te soovite installeerida tarkvara teistesse serveritesse, siis kasutage käsku Invoke-Command ja käivitage install teises serveris.

EDU!

Wednesday, August 17, 2011

Troubleshooting Configuration Manager Client issues dokument

Kirjutasin valmis oma kogemuste põhjal dokumendi kus on kirjas mõned WMI (Windows Management Instrumentation) vead mis põhjustavad Configuration Manageri kliendi mitte töötamist ja kuidas neid võiks lahendada.

Troubleshooting_broken_ConfigMgr_Client_17_08_2011_Estonia.docx

Troubleshooting_broken_ConfigMgr_Client_17_08_2011_English.docx

Dokumendi saate tõmmata siit:

https://skydrive.live.com/?cid=030bc1ea09f784f6#!/?cid=030bc1ea09f784f6&sc=documents&move=30BC1EA09F784F6%21272&sid=30BC1EA09F784F6%21161&iscopy=0&id=30BC1EA09F784F6%21273!cid=030BC1EA09F784F6&id=30BC1EA09F784F6%21273&sc=documents

Edu teile!

Monday, August 15, 2011

Esmaspäevane PowerShelli Tip

Kui sa soovid välja jagada kaustu, siis on seda PowerShelliga väga lihtne teha. Selle funktsiooniga saad nii lokaalselt kui ka teise arvutisse/serverisse jagatud kausta tekitada. Funktsioon mida saad kasutada on järgnev:

Function New-Share            
{
Param(
[String]$ComputerName = "$env:ComputerName",
[String]$FolderPath,
[String]$ShareName,
[String]$ShareDescription

)

[Int]$ShareType = 0 # Share type 0 means that it is Disk Drive.

$Share = [WMICLASS]"\\$ComputerName\root\cimv2:Win32_Share"
$Create = $Share.Create($FolderPath,$ShareName,$ShareType,$Null,$ShareDescription)

Switch ($Create.ReturnValue)
{
0 {$ReturnText = "Success"}
2 {$ReturnText = "Access Denied"}
8 {$ReturnText = "Unknown Failure"}
9 {$ReturnText = "Invalid Name"}
10 {$ReturnText = "Invalid Level"}
21 {$ReturnText = "Invalid Paramete"}
22 {$ReturnText = "Duplicate Share"}
23 {$ReturnText = "ReDirected Path"}
24 {$ReturnText = "Unknown Device or Directory"}
25 {$ReturnText = "Net Name Not Found"}
default {$ReturnText = "Unknown Error"}
}

If($Create.ReturnValue -ne 0){
Write-Host "Something went wrong: $ReturnText"

}
ELSE{

Write-Host "Share created successfully"
}


}# End Function

Win32_Share WMI klassi kohta leiate rohkem infot siit: http://msdn.microsoft.com/en-us/library/aa394435(v=vs.85).aspx


Edu teile!

Friday, August 12, 2011

PowerShell ja Excel osa 2–Kuidas Installida XLA või XLL pluginit

Sain omale eile paki tellimuse ja tarkvara installeerimise käigus tuli välja, et on vaja ka registreerida Exceli Add-In. Tarkvaraga oli kaasas üks VB skript aga see mulle ei sobinud ja tegin asja ringi PowerShelli.

Paki tegemise ajal tuli välja, et Excel hoiab oma registreerituid Add-Inne HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options . 14.0 on Office 2010 versioon. See pilt on enne Add-Inni installi

clip_image002

Peale Add-Inni installi

clip_image004

Pildilt on näha, et juurde on lisatud OPEN ja selle väärtuseks on lisatud kus see konkreetne Add-In asub. Kui rohkem Add-Inne lisatud, siis on nad OPEN2, OPEN3, OPEN4 jne

PowerShelli koodi kirjutamisel avastasin, et on praktiliselt kaks täiesti samasugust varianti kuidas seda installida:

Näide 1

[Threading.Thread]::CurrentThread.CurrentCulture = 'en-US'            
$ExcelObject = New-Object -ComObject "Excel.Application"
$ExcelObject.Visible = $True
$ExcelObject.workbooks.Add()
$AddIn = $ExcelObject.AddIns.Add("C:\Program Files\MOPS\sys\addins\excel\mopsexcel.xla", $True)
$AddIn.Installed = $True
$ExcelObject.Quit()

Näide2

[Threading.Thread]::CurrentThread.CurrentCulture = 'en-US'            
$ExcelObject = New-Object -ComObject "Excel.Application"
$ExcelObject.Visible = $True
$ExcelWorkbook = $ExcelObject.workbooks.Add()
$AddIn = $ExcelWorkbook.application.AddIns.Add("C:\Program Files\MOPS\sys\addins\excel\mopsexcel.xla", $True)
$AddIn.Installed = $True
$ExcelObject.Quit()

Mõlemad variandid töötavad aga mis neil täpsemalt vahet on seda ma öelda ei oska.

Kui te soovite näha millised Add-innit on lisatud, siis võite nt kasutada järgnevat käsku:

$ExcelWorkbook.application.AddIns
või 
$ExcelObject.AddIns

Kui te selle skripti käima lasete ja Exceli kinni panete, siis millegi pärast jääb Exceli protsess käima. Täpsemalt seda uurinud pole miks see nii on.


protsess


Microsofti ametliku KB võite leida siit kuidas seda asja VBskripti abil teha: http://support.microsoft.com/kb/280290


Testisin seda lahendust Windows 7-ga ja Office 2010-ga.


Skriptid saate tõmmata siit: https://skydrive.live.com/?sc=documents&cid=030bc1ea09f784f6#!/?cid=030bc1ea09f784f6&sc=documents&uc=2&id=30BC1EA09F784F6%21213


Add_Excel_Plugin_V1.ps1


Add_Excel_Plugin_V2.ps1


Edu teile!

PowerShell ja Exceli bugi

Enne kui selle postitusega alustan mainin ära, et mõlemad blogid on mul nüüd alates eilsest kaetud Creative Commonsiga. Kogu info mis on mu bogidesse postitatud võite te kasutada, kopeerida, muuta jne aga tingimusel, et te ei tohi minu nime sealt eemaldada. Täpsemalt Creative Commonsi kohta saate lugeda siit: http://creativecommons.org/ .

___________________________________________________________________

Enne kui ma Stora Ensose tööle tulin, siis kaks kuud enne seda alustasin ma PowerShelli õpinguid ja olen sellega tegelenud tõsisemalt nüüd juba üle aasta. Võib öelda, et tänu PowerShellile on mu produktiivsus tõusnud ikka väga palju. PowerShelliga saan lihtsalt ja kiirelt teha neid asju mida VB skriptiga oleks olnud mõttetu teha või liialt palju aega oleks raisanud, et koodi kirjutada.

Kui te otsite omale töötajaid, siis võtke tööle inimene kes oskab PowerShelli. Töötaja kes oskab ja töötaja kes ei oska PowerShelli, siis nende kahe töötaja produktiivsuse vahe on ikka väga suur.

aga asja juurde nüüd:

Kui te soovite PowerShelliga Excelisse kirjutada ja te näiteks kirjutate sellised read:

$ExcelObject = New-Object -ComObject "Excel.Application"            
$ExcelObject.Visible = $True
$WorkBook = $ExcelObject.Workbooks.Add()
$WorkBook.SaveAs("C:\labor\PowerShellTest.Xlsx")

Peale selle koodi käivitamist võite te saada järgneva veateate:


Exception calling "Add" with "0" argument(s): "Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))"


At line:4 char:39


+ $Workbook = $ExcelObject.workbooks.add <<<< ()


+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException


+ FullyQualifiedErrorId : ComMethodTargetInvocation


Method invocation failed because [System.__ComObject] doesn't contain a method named 'SaveAS'.


At line:5 char:17


+ $Workbook.SaveAS <<<< ("C:\Users\KaidoTest\PowerShellTEst.Xlsx")


+ CategoryInfo : InvalidOperation: (SaveAS:String) [], RuntimeException


+ FullyQualifiedErrorId : MethodNotFound


Selleks, et seda viga ei juhtuks peate te lisama järgneva rea koodi algusesse:

[Threading.Thread]::CurrentThread.CurrentCulture = 'en-US'

Täpsemalt saate lugeda sellest bugist siit: http://support.microsoft.com/default.aspx?scid=kb;en-us;320369


Edu teile!

Monday, August 8, 2011

Microsoft Security Compliance Manager Tool

Microsoft lasi välja täitsa toreda tööriista nagu “Microsoft Security Compliance Manager Tool”. Selle tööriistaga on võimalik:

image

· Tsentraalne haldus

· Võimalus vaadata grupipoliitikate parimat praktikat – Teil on võimalus sisse importida kas Microsofti või kolmanda partei poolt tehtud Baseline

image

· Võimalus välja eksportida valmis seadistatud BaselineSee punkt on kõige asjalikum selle toote juues, et te saate valmis tehtud baseline välja eksportida kas grupipoliitikana, teha Configuration Manageri jaoks valmis Desired Configuration Management paket või SCAP (Security Content Automation Protocol) paket.

image

· Versiooni haldus – teil on võimalus alles jätta erinevaid versioone oma seadistute komplektidest ja vajadusel näha palju on mingid poliitikad muutunud.

Kui soovite mingit toimingut teha aga ei oska, siis leiate abi siit: http://social.technet.microsoft.com/wiki/contents/articles/microsoft-security-compliance-manager-scm-getting-started.aspx

Tarkvara saate tõmmata siit: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=16776