Vraag


Acties:
  • 0 Henk 'm!

  • Schrikbeest
  • Registratie: Juli 2011
  • Laatst online: 20-08 23:14
Hoi,

Sinds vorige week ben ik bezig met het een unattend installatie te maken voor MSSQL 2014. nu kan je met de configurationfile.ini heel veel opties instellen die je wilt hebben in MSSQL en zo ook het SA password ingeven. Nu vind ik dat een beveiligingsrisico, zo'n ini file kan ergens blijven rondzwerven en wellicht in verkeerde handen vallen. Nu is mijn idee om met Powershell een inputvenster te creeren waar je het SA password invult en deze input vervolgens gebruikt om switch /SAPWD=<password> in te vullen.

Ik heb inmiddels dit gevonden:
YouTube: Get User Input From Command Line In Powershell !
Nu zit ik alleen nog mee dat ik dit wil vertalen naar /SAPWD=<password>


...

Windows server 2012r2, MSSQL Std 2014, Powershell
...


...

[ Voor 15% gewijzigd door Schrikbeest op 10-12-2016 12:48 ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 16:45

Hero of Time

Moderator LNX

There is only one Legend

Dat is toch niet zo moeilijk? Je stopt de input van de gebruiker in een variabele en die zet je op die plek neer. Hoe is je code nu dan? Want je geeft wel erg weinig info om mee te werken.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Schrikbeest
  • Registratie: Juli 2011
  • Laatst online: 20-08 23:14
Ik zal wat ik heb maandag plaatsen, kan er nu niet bij

Acties:
  • 0 Henk 'm!

Verwijderd

Zoiets als dit?
code:
1
2
$rootpassword = Read-Host -Prompt "Enter root password"
/SAPWD=$rootpassword

Acties:
  • 0 Henk 'm!

  • mufana
  • Registratie: Mei 2009
  • Laatst online: 05-06-2023
Je kunt er ook een password file voor aanmaken en die inlezen in je script.

Om een password encrypted te maken zoiets:

[Byte[]]$EncryptionKey = (1..16)
$SecurePass = "WachtwoordHier" | ConvertTo-SecureString -AsPlainText -Force -Verbose
$SecurePass | ConvertFrom-SecureString -key $EncryptionKey | Out-File c:\temp\file.txt -Verbose

Het wachtwoord wordt dan encrypted opgeslagen in C:\Temp\file.txt.

Om de file te gebruiken in je SQL script:

[Byte[]] $EncryptionKey = (1..16)
$User = "JeSQLSAaccountHier"
$Pass = Get-Content "PathNaarJeWachtWoordFile | ConvertTo-SecureString -Key $EncryptionKey
$Cred = New-Object -TypeName System.Management.Automation.PSCredential ("$User",$Pass)

In elk geval voorkom je dan dat het wachtwoord plaintext ergens in een file of in je script staat.

Acties:
  • 0 Henk 'm!

  • Schrikbeest
  • Registratie: Juli 2011
  • Laatst online: 20-08 23:14
Ik ben inmiddels iets verder met het script en het werk. Echter wil ik nu dat ik de MSSQL iso mount naar een driveletter met een commando en dat hij die output weer gebruikt om de driveletter als working directory te gebruiken.

$mountResult = Mount-DiskImage -ImagePath C:\SW_DVD9_SQL_Svr_Standard_Edtn_2014w_SP1_64Bit_English_-2_MLF_X20-29010.iso

dus $mountResult moet dan de driveletter voorstellen.

vervolgens gebruik ik dit commando om de driveletter als work directory te gebruiken:

Set-Location $mountresult

Dit werkt echter niet. Hoe krijg ik dit voor elkaar?

Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Schrikbeest schreef op maandag 12 december 2016 @ 14:40:
Ik ben inmiddels iets verder met het script en het werk. Echter wil ik nu dat ik de MSSQL iso mount naar een driveletter met een commando en dat hij die output weer gebruikt om de driveletter als working directory te gebruiken.

$mountResult = Mount-DiskImage -ImagePath C:\SW_DVD9_SQL_Svr_Standard_Edtn_2014w_SP1_64Bit_English_-2_MLF_X20-29010.iso

dus $mountResult moet dan de driveletter voorstellen.

vervolgens gebruik ik dit commando om de driveletter als work directory te gebruiken:

Set-Location $mountresult

Dit werkt echter niet. Hoe krijg ik dit voor elkaar?
Nou, dat was ook niet moeilijk te googlen :O ... http://stackoverflow.com/...nted-with-mount-diskimage

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Oogje
  • Registratie: Oktober 2003
  • Niet online
Schrikbeest schreef op maandag 12 december 2016 @ 14:40:
Ik ben inmiddels iets verder met het script en het werk. Echter wil ik nu dat ik de MSSQL iso mount naar een driveletter met een commando en dat hij die output weer gebruikt om de driveletter als working directory te gebruiken.

$mountResult = Mount-DiskImage -ImagePath C:\SW_DVD9_SQL_Svr_Standard_Edtn_2014w_SP1_64Bit_English_-2_MLF_X20-29010.iso

dus $mountResult moet dan de driveletter voorstellen.

vervolgens gebruik ik dit commando om de driveletter als work directory te gebruiken:

Set-Location $mountresult

Dit werkt echter niet. Hoe krijg ik dit voor elkaar?
Wat is de inhoud van $mountresult dan na je eerste commando?

Any errors in spelling, tact, or fact are transmission errors.


Acties:
  • 0 Henk 'm!

  • Schrikbeest
  • Registratie: Juli 2011
  • Laatst online: 20-08 23:14
Die had ik ook gevonden en gebruikt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ECHO Installing .NET 3.5 Framework

#Add-WindowsFeature WAS-NET-Environment

$ImagePath= "C:\SW_DVD9_SQL_Svr_Standard_Edtn_2014w_SP1_64Bit_English_-2_MLF_X20-29010.iso"
$ISODrive = (Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter
IF (!$ISODrive) {
Mount-DiskImage -ImagePath $ImagePath -StorageType ISO
}
$ISODrive = (Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter
Write-Host ("ISO Drive is " + $ISODrive)

Set-Location $ISODrive

$sapassword = Read-Host -Prompt "Enter SA password" -AsSecureString

Start-Process -FilePath "setup.exe" -ArgumentList "/SAPWD=$sapassword /ConfigurationFile=C:\Users\xxx\Documents\ConfigurationFile.ini"


Echter krijg ik dit terug:
Set-Location : Cannot find path 'C:\Windows\system32\F' because it does not exist.
At line:1 char:1
+ Set-Location $ISODrive
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Windows\system32\F:String) [Set-Location], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand :-(

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Duidelijke foutmelding, toch? Je wilt naar 'C:\Windows\system32\F'... Wat zou er misgaan?
Ik mis wel een beetje zelfredzaamheid. Echo eens $ISODrive en zie dat die alleen 'F' teruggeeft. Doe dan eens handmatig een Set-Location F en zie wat er gebeurt. Probeer dat vervolgens op te lossen.

Gaat lukken!

[ Voor 74% gewijzigd door Room42 op 12-12-2016 15:40 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • +1 Henk 'm!

  • Jazzy
  • Registratie: Juni 2000
  • Laatst online: 08:51

Jazzy

Moderator SSC/PB

Moooooh!

Handige tip in zo'n geval is om de variabele gewoon even te tonen in je script. Dus zoiets:
code:
1
2
$ISODrive
#Set-Location $ISODrive


Jij denk nu namelijk dat er "F:" of "F:\" in de variabele zit, maar blijkbaar is dat gewoon F.

Exchange en Office 365 specialist. Mijn blog.


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Ik zie nu dat ie dat (de echo) zelfs doet op regel 11. Daar had ie dus al kunnen zien dat de DOS-equivalent "CD F" (want dat is effectief hetzelfde) niet werkt. ;)

[ Voor 3% gewijzigd door Room42 op 12-12-2016 15:47 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Jazzy
  • Registratie: Juni 2000
  • Laatst online: 08:51

Jazzy

Moderator SSC/PB

Moooooh!

O ja, dat is wel heel duidelijk inderdaad. :)

Exchange en Office 365 specialist. Mijn blog.


Acties:
  • 0 Henk 'm!

  • Schrikbeest
  • Registratie: Juli 2011
  • Laatst online: 20-08 23:14
Room42 schreef op maandag 12 december 2016 @ 15:38:
[...]

Duidelijke foutmelding, toch? Je wilt naar 'C:\Windows\system32\F'... Wat zou er misgaan?
Ik mis wel een beetje zelfredzaamheid. Echo eens $ISODrive en zie dat die alleen 'F' teruggeeft. Doe dan eens handmatig een Set-Location F en zie wat er gebeurt. Probeer dat vervolgens op te lossen.

Gaat lukken!
Foutmelding was zeker duidelijk Ik zie inderdaad ook wel dat hij F teruggeeft en niet de driveletter F: zoals ik wilde om een werkende working directory te krijgen.

Mijn vraag is dan ook nu hoe ik dit moet aanvliegen.

Acties:
  • 0 Henk 'm!

  • Jazzy
  • Registratie: Juni 2000
  • Laatst online: 08:51

Jazzy

Moderator SSC/PB

Moooooh!

Uitzoeken hoe je twee delen samen kunt voegen? Dan bedoel ik dus het deel wat je al hebt en de dubbele punt. PowerShell concatenate two strings?

[ Voor 34% gewijzigd door Jazzy op 12-12-2016 16:01 ]

Exchange en Office 365 specialist. Mijn blog.


Acties:
  • +1 Henk 'm!

  • Beekforel
  • Registratie: November 2001
  • Laatst online: 16:01

Beekforel

Is eigenlijk geen vis

Set-Location $ISODrive":\"

Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Schrikbeest schreef op maandag 12 december 2016 @ 15:58:
[...]


Foutmelding was zeker duidelijk Ik zie inderdaad ook wel dat hij F teruggeeft en niet de driveletter F: zoals ik wilde om een werkende working directory te krijgen.

Mijn vraag is dan ook nu hoe ik dit moet aanvliegen.
Naast de reeds gegeven tips, kun je ook onderzoeken of (Get-DiskImage -ImagePath $ImagePath | Get-Volume) misschien meer bruikbare objecten retourneert, waar Set-Location direct wat mee kan.

PowerShell:
1
(Get-DiskImage -ImagePath $ImagePath | Get-Volume) | fl

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Schrikbeest
  • Registratie: Juli 2011
  • Laatst online: 20-08 23:14
Room42 schreef op maandag 12 december 2016 @ 16:09:
[...]

Naast de reeds gegeven tips, kun je ook onderzoeken of (Get-DiskImage -ImagePath $ImagePath | Get-Volume) misschien meer bruikbare objecten retourneert, waar Set-Location direct wat mee kan.

PowerShell:
1
(Get-DiskImage -ImagePath $ImagePath | Get-Volume) | fl
Ga ik zeker wat mee doen, de opmerking van freakstar is zeker werkbaar (had niet gedacht aan zoiets simpels) :)

Many thanks!

Acties:
  • +2 Henk 'm!

  • Jazzy
  • Registratie: Juni 2000
  • Laatst online: 08:51

Jazzy

Moderator SSC/PB

Moooooh!

Probeer dit soort dingen niet te vragen maar zelf te vinden. Nu is het dit, morgen is het wat anders. Juist de basics zijn voor PowerShell ontzettend goed te vinden met Google. Daar leer je uiteindelijk een stuk meer van.

Exchange en Office 365 specialist. Mijn blog.

Pagina: 1