Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Fout in script tijdens import .PS1 script.

Pagina: 1
Acties:

  • CuBras
  • Registratie: Oktober 2011
  • Laatst online: 27-11 22:55
Besten,

Voor een projectje probeer ik meerdere users toe te voegen vanuit een powershell script. Nu heb ik gehoord dat je dit het makkelijkste kan doen door een excel werkmap te gebruiken, deze naar wens in te vullen, op te slaan als een .PS1 en te runnen op de server. Echter tijdens het runnen krijg ik de volgende foutmelding(en) maar naar mijn weten staat alles goed:

Afbeeldingslocatie: http://i57.tinypic.com/1dze46.jpg

Hoe het in mijn excel werkmap eruit ziet: (nb namen zijn even gefingeerd en voor het voorbeeld zijn het 2 namen;) De share mappen en homefolders wijs ik handmatig toe.

New-ADDUser -Name "User" -GivenName "U" - SurName "Ser- SamAccountName "User" -Path "OU=Werknemers OU, OU=Domain Users, OU=Board, DC=pot, DC=loc" -AccountPassword (ConvertTo-SecureString "Welkom02 -AsPlainText -Force) -Enabled $true

Zoals ik de foutmelding lees staan er wat leestekens fout, maar als ik het nauwlettend lees, zie ik het niet zo snel fout staan ..
Via het internet zijn talloze manieren om dit te doen, maar die scripts zijn nogal vaag voor mij.

Hebben jullie enig idee waar ik de mist in ga of dat ik het beter anders kan oplossen?

[ Voor 14% gewijzigd door CuBras op 24-10-2023 20:14 ]


  • BaRF
  • Registratie: Augustus 2001
  • Laatst online: 27-11 15:01

BaRF

bijna kerst

Nou heb ik totaal geen kaas gegeten van dit soort dingen - maar het lijkt erop dat je script niet in het juiste bestandsformaat is gegoten oid :P

The space between is where you'll find me hiding, waiting for you


  • TheBorg
  • Registratie: November 2002
  • Laatst online: 24-11 12:29

TheBorg

Resistance is futile.

Je hebt in binary excel file gebruikt. Als je het werkblad opslaat als text document of alles eerst in Notepad oid plakt moet het wel werken.

  • CuBras
  • Registratie: Oktober 2011
  • Laatst online: 27-11 22:55
Bedankt voor de replys,

@TheBorg

Als ik je goed begrijp moet ik deze code in .txt file opslaan en dan weer omzetten naar een .ps1 file? Of moet ik het niet omzetteb en dan het commando " import-users" .[script naam] gebruiken?

  • SirDarkAngel
  • Registratie: April 2005
  • Laatst online: 27-11 12:13
Ik snap de vraag maar half. Post anders je script eens compleet, want zoals ik begrijp heb je nu gepost wat je verwacht wat je script moet doen.

Je wilt gebruikers aanmaken aan de hand van een Excel sheet? In dat geval verwacht ik dat je de sheet moet opslaan als CSV bestand. (het is mogelijk Excel bestanden uit te lezen via Powershell, maar dit zie je minder vaak gebruikt worden).

Maar als je heel je script kan posten kunnen we je makkelijker helpen.

Edit: Ik zie ook een Script_test.csv.ps1 staan. Is dit niet het csv bestand wat je wil inlezen? Verwijder dan "ps1". (nogmaals het blijft gokken op dit moment)

[ Voor 15% gewijzigd door SirDarkAngel op 26-02-2015 18:06 ]

Wilde altijd al iets over computers weten


  • Kees-Jan
  • Registratie: December 2007
  • Laatst online: 29-11 09:34
plak dit eens gewoon in je PowerShell box:

New-ADUser -Name "Jeroen Koomen" -GivenName "Jeroen" - SurName "Koomen" - SamAccountName "jkoomen" -Path "OU=Werknemers OU, OU=Domain Users, OU=Board, DC=pot, DC=loc" -AccountPassword (ConvertTo-SecureString "Welkom02" -AsPlainText -Force) -Enabled $true

en nee, het is niet New-ADDuser maar New-ADuser (met één "D")
en je was een " vergeten achter je password text

the older I get, the better I was...


  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 28-11 13:26
Ik heb zelf om eerlijk te zijn nog nooit gehoord van een PS script in Excel maken : daar heb je namelijk Powershell ISE voor.
Een typisch create user scriptje leest een CSV bestand in (Excel bestand uitlezen gaat voorzover ik weet alleen dmv een COM object, is op zich ook wel in een paar regeltjes te fixen) en past vervolgens een "foreach" loop toe op de lijst om de accounts in batch aan te maken.

Voorbeeld van een PS scriptje welke dit doet (uitgaande van een CSV bestand met de columns ook correct genamed) :
code:
1
2
3
4
$import = import-csv c:\randomfolder\users.csv
Foreach ($user in $import)
    {New-ADUser -Name $user.Name -GivenName $user.GivenName, -SurName $user.SurName -SamAccountName $user.SamAccountName
}
(ik heb niet alles ingevuld omdat er ook nog "eigen" uitzoekwerk te doen is voor de TS op deze manier).
Als je creatief bent kun je bv ipv -Name $user.name in een kolom in je CSV te definieren ook gewoon deze leeglaten (aangezien GivenName + Surname al de "Name" vormen) en ipv $user.name iets als $($user.GivenName + " " + $user.Surname)
Hetzelfde kun je ook doen voor bv de SamAccountName ; dan blijft deze consistent aan de "naming scheme" binnen het bedrijf. In jouw geval (waarbij de samaccountname de eerste letter van de voornaam + achternaam is zou je dan -SamAccountName $($user.GivenName.Substring(0,1) + $user.SurName).Tolower() kunnen gebruiken om SamAccountName het eerste karakter van de voornaam + achternaam (omgezet naar lowercase) kunnen gebruiken.

  • FREAKJAM
  • Registratie: Mei 2007
  • Laatst online: 29-11 20:42

FREAKJAM

"MAXIMUM"

Heb je het script zelf geschreven of heb je de volgende gebruikt? Waarom het wiel opnieuw proberen uit te vinden? Script is trouwens gemaakt door een Nederlander.

Wij gebruiken in ieder geval een script op basis van bovenstaand script op ons werk. (met behulp van quest cmdlets).

[ Voor 26% gewijzigd door FREAKJAM op 26-02-2015 20:21 ]

is everything cool?


  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 28-11 13:26
FREAKJAM schreef op donderdag 26 februari 2015 @ 20:17:
Heb je het script zelf geschreven of heb je de volgende gebruikt? Waarom het wiel opnieuw proberen uit te vinden? Script is trouwens gemaakt door een Nederlander.

Wij gebruiken in ieder geval een script op basis van bovenstaand script op ons werk. (met behulp van quest cmdlets).
Het wiel opnieuw uitvinden hoeft niet iets slechts te zijn. Als ik die instelling had gehad dan had ik nu niet zelf het ene na het andere script uit mijn hoofd uit kunnen poepen : ik ben een paar jaar geleden met minimale PS kennis gewoon begonnen ermee, veel scripts van anderen lopen ontleden om het zelf te leren.

Wat is overigens het verschil tussen de quest AD cmdlets en de reguliere AD cmdlets van MS? Ik ben met de gewone AD cmdlets van Microsoft zelf nog nooit echt tegen beperkingen aangelopen (behalve dan dat je een DC met 2008R2 of hoger nodig hebt)

  • FREAKJAM
  • Registratie: Mei 2007
  • Laatst online: 29-11 20:42

FREAKJAM

"MAXIMUM"

Daar heb je een punt. Ik weet niet of de TS ook daadwerkelijk powershellscripting wil leren, dan is het natuurlijk leuker om er zelf in te duiken en zelf iets te scripten.

De cmdlets van Quest werken beter "out of the box" en bieden wat meer mogelijkheden zover ik weet. Maar goed, dat was jaren terug. (We gebruiken de scripts al ~5 jaar). De meningen hierover zijn trouwens inmiddels wel verdeeld. Het is in ieder geval maar net wat je het fijnste vindt.
"Quest doesn't require a management gateway to manage 2003 and above domains." Yeah, this is a big deal. While Microsoft's module DOES work on 2003+ domains, it only does so aft you download and install a free Microsoft add-on to at least one non-2008R2 domain controller. Quest also lets you manage ADLDS on Windows 7, and Microsoft's cmdlets don't.
Bij ons op de helpdesk vullen ze het volgende in, in een csv bestand en het script doet de rest (maakt user aan, stelt home-drive in, printcode (Equitrac) etc etc).

[ Voor 160% gewijzigd door FREAKJAM op 27-02-2015 08:56 ]

is everything cool?


  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 29-11 22:19

ElCondor

Geluk is Onmisbaar

CuBras schreef op donderdag 26 februari 2015 @ 17:13:

...Nu heb ik gehoord dat je dit het makkelijkste kan doen door een excel werkmap te gebruiken, deze naar wens in te vullen, op te slaan als een .PS1 en te runnen op de server...
Wut?? :') Daar heb ik echt nog nooit van gehoord. Je moet je Excel werkblad als CSV opslaan en dan met een van de statements hierboven importeren in AD. Je Excel sheet hernoemen of opslaan als .ps1, klinkt mij als een portie plintladders of bougievonkjes in de oren. Heb je een link waar je die informatie gevonden hebt?

Let overigens wel op hoe je Landinstelling is geconfigureerd. Een CSV neemt het scheidings teken van Windows over en dat is niet altijd per definitie een , (CSV staat voor comma separated value, just to be sure). Dus het kan goed zijn dat je ; hebt als scheidingsteken en dat vindt PowerShell dan weer niet leuk. Ook de kolom met de OU waar de users in terecht moeten komen moet je tussen dubbele aanhalingstekens zetten.

Succes!

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 28-11 13:26
ElCondor schreef op vrijdag 27 februari 2015 @ 08:54:
[...]

Een CSV neemt het schedings teken van Windows over en dat is niet altijd per definitie een , (CSV staat voor comma separated value, just to be sure). Dus het kan goed zijn dat je ; hebt als scheidingsteken en dat vindt PowerShell dan weer niet leuk. Ook de kolom met de OU waar de users in terecht moeten komen moet je tussen dubbele aanhalingstekens zetten.

Succes!
Voor Import-CSV heb je de "-delimiter" argument om de delimiter aan te geven.

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 29-11 22:19

ElCondor

Geluk is Onmisbaar

Hot-dang!!! Die moek maar eens meenemen dan, dat scheelt me weer een hoop ctrl-H in Notepad++ :P

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


  • CuBras
  • Registratie: Oktober 2011
  • Laatst online: 27-11 22:55
Beste mensen,

Heel vriendelijk bedankt allemaal voor het meedenken. Er is heel wat feedback van jullie gekomen en ik wil jullie daarvoor bedanken! Echter ben ik even verder gaan grutten op basis van feedback van TheBorg en Kees-Jan en is het werkend geworden.

Allereerst was ik begonnen met een batch command (New-ADDUser)in powershell, wat natuurlijk niet werkt. Dus dit omgezet naar een powershell command (New-ADUser).
Vervolgens de query kloppend gemaakt en in de laatste kolom van een excel bestand laten samenvoegen met een '= formule' (=A2&A3&A4&A5&A6 enz).

Vervolgens de hele query overgenomen in een leeg textbestand en deze opgeslagen als .PS1 file -> gekopieerd naar de omgeving -> Run Powershell as Admin -> .PS1 file opgezocht en gerund.

Vervolgens is netjes de gevraagde users aangemaakt.

Dit is uiteindelijk de code geworden:

New-ADUser -Name "User" -GivenName "U" -SurName "Ser-SamAccountName "User" -UserPrincipalName "user@pot.loc" -Path "OU=Board,DC=pot,DC=loc" -AccountPassword (ConvertTo-SecureString "Welkom02" -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true

Een tip voor iemand anders .. Je kan het beste meteen in Powershel ISE beginnen. Hier krijg je een auto-aanvul moment indien het statement bestaat wat je wilt gebruiken.

Heeeeel hartelijk bedankt voor het meedenken!!

[ Voor 23% gewijzigd door CuBras op 24-10-2023 20:14 ]

Pagina: 1