Verwijzen naar het bedrijf in een batchbestand Overzicht Laatste deel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Hallo,

Ik weet niet zeker of mijn vraag hier hoort

Momenteel ben ik bezig met het maken van een logonscript (.bat) om de netwerkschijven aan een gebruiker te koppelen.
Ik weet dat dit ook via de GPO kan, maar de opdracht was om dit via een logonscript te koppelen.

In de Active Directory staat bij elke gebruiker het 'bedrijf' ingevuld en mijn vraag is of er verwezen kan worden naar het 'bedrijf'. Zodat er 1 regel voor iedereen aangemaakt kan worden.
Bijvoorbeeld:

NET USE A: \\servernaam\'bedrijf'\


Ik heb het volgende al geprobeerd:

copy "$COMPANY" to "cn=%username%,ou=$company,ou=xxx,ou=xxxx,dc=xxx,dc=xxx"

$COMPANY="cn=%username%,ou=$company,ou=xxx,ou=xxx,dc=xxx,dc=xxx"

NET USE A: \\servernaam\$COMPANY\
NET USE A: \\servernaam\%COMPANY%\

De bovenste 2 regels waren niet tegelijkertijd gebruikt.
xxx staat voor de gegevens van het bedrijf

Dit is de eerste keer dat ik een opdracht krijg om een logonscript te maken.

Alvast bedankt voor de hulp.
Gr.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Mirte_ schreef op dinsdag 24 februari 2015 @ 07:49:
Ik weet niet zeker of mijn vraag hier hoort
Je had er natuurlijk even mee kunnen beginnen om te kijken naar onze sticky topics. Waar hoort mijn topic? prijkt heel mooi bovenaan de topiclijst. ;)

PRG >> WOS

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Web-Brielle
  • Registratie: Februari 2011
  • Niet online
Heb je de betreffende user in een groep zitten?
Zelf zitten we hier met 12 BV's op 1 server, ook zo'n constructie moeten maken.

vbs:
Case "ABC"
WSHNetwork.MapNetworkDrive "F:", "\\Server\ABC",True

er staan zat voorbeelden online. Zou toch kijken naar VBS ;)

http://wiki.ljackson.us/Logonscript.vbs

[ Voor 7% gewijzigd door Web-Brielle op 24-02-2015 09:47 ]

2x BambuLab X1CC 3D Printer - Omtech 60w Co2 Laser - Cloudray 30w Fiber Laser


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
De gebruikers zitten al in de groepen.

Ik zal eens kijken of ik overweg kan met VBS :P

Alvast bedankt

Edit:
Het werkt :)

Bedankt voor de hulp Web-Brielle

[ Voor 21% gewijzigd door Mirte_ op 24-02-2015 10:54 ]


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:15
Web-Brielle schreef op dinsdag 24 februari 2015 @ 09:47:
Heb je de betreffende user in een groep zitten?
Zelf zitten we hier met 12 BV's op 1 server, ook zo'n constructie moeten maken.

vbs:
Case "ABC"
WSHNetwork.MapNetworkDrive "F:", "\\Server\ABC",True

er staan zat voorbeelden online. Zou toch kijken naar VBS ;)

http://wiki.ljackson.us/Logonscript.vbs
Dit dus.
Overigens moet je (buiten je opdracht om natuurlijk) proberen om hard weg te rennen voor VBS, BAT en CMD files tegenwoordig : het is OF GPO OF Powershell tegenwoordig.
Met Powershell kun je dit overigens ook makkelijk doen op basis van security groep met een scriptje.

Acties:
  • 0 Henk 'm!

  • Web-Brielle
  • Registratie: Februari 2011
  • Niet online
Dit dus.
Overigens moet je (buiten je opdracht om natuurlijk) proberen om hard weg te rennen voor VBS, BAT en CMD files tegenwoordig : het is OF GPO OF Powershell tegenwoordig.
Met Powershell kun je dit overigens ook makkelijk doen op basis van security groep met een scriptje.
Uiteraard wil je dit liever niet gebruiken. Via GPO is toch fijner werken vind ik, maar als de baas het wilt.. Dan mag die achter de feiten aanlopen :)

2x BambuLab X1CC 3D Printer - Omtech 60w Co2 Laser - Cloudray 30w Fiber Laser


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Het is een stageopdracht, en via de GPO werkt wel fijner ja.
Verder werken we op school ook niet met scripten, alleen met de GPO.

Maar ik wil toch een voldoende halen voor mijn stage, dus dan wordt het werken met BAT / VBS.

Acties:
  • 0 Henk 'm!

  • CAP-Team
  • Registratie: April 2000
  • Laatst online: 06-10 16:55

CAP-Team

XBL: CAPTeam

code:
1
2
set company=hallo
echo net use y: \\bla\%company%

resultaat:
net use y: \\bla\hallo

Microsoft Surface Pro 6 | Samsung Galaxy S21FE | XBOX Series X


Acties:
  • 0 Henk 'm!

  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

CAP-Team schreef op dinsdag 24 februari 2015 @ 14:43:
code:
1
2
set company=hallo
echo net use y: \\bla\%company%

resultaat:
net use y: \\bla\hallo
En nou nog even uitleggen hoe je de company naam uitleest uit AD

QnJhaGlld2FoaWV3YQ==


  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 07-10 16:11

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Afgezien van het feit dat het redelijk achterhaald is om dit op basis van een bat-file te doen, is ook de achterliggende gedachte achterhaald.

Ik zou gewoon alle afdelingsshares samenvoegen in een DFS namespace, en daar Access Based Enumeration op aanzetten. Gebruikers krijgen dan allemaal dezelfde mapping naar de namespace, en zien alleen de afdelingsmappen waar ze rechten op hebben.

Enable Access-Based Enumeration on a Namespace

Overigens is het verzoek van je stagebedrijf prima te scripten hoor. Als dit een opdracht is die meer als "oefening" bedoeld is voor je heb ik niks gezegd.

Kijk dan ook even naar de commando's dsget en dsquery. Daarmee kun je vanuit een prompt AD-property's van bv een gebruiker opvragen.

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:15
Mirte_ schreef op dinsdag 24 februari 2015 @ 14:23:
Het is een stageopdracht, en via de GPO werkt wel fijner ja.
Verder werken we op school ook niet met scripten, alleen met de GPO.

Maar ik wil toch een voldoende halen voor mijn stage, dus dan wordt het werken met BAT / VBS.
Leuke opdracht dan : dus om een voldoende voor je stage te halen moet je op een achterhaalde manier werken?
Maar goed, ik kom tijdens het werk ook nog steeds regelmatig omgevingen tegen waarbij een collega het handiger vond om de boel met VBscripts en .BATfiles in te richten : als ik het tegenkom en de collega is nog steeds werkzaam bij ons dan krijgt deze altijd een mail van mij (en de manager) om de boel volgens onze bedrijfsrichtlijnen in te richten ipv op een crappy unmanageble manier (ik heb nu een omgeving voor mij neus waarbij mijn collega het blijkbaar handig vond om letterlijk 20 login scripts - in .BAT formaat - aan te maken. Waarbij ook nog eens letterlijk IEDERE share dmv "net use /delete" wordt verwijderd ipv net use delete * OF gewoon GPOs)

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Killah_Priest schreef op donderdag 26 februari 2015 @ 10:45:
[...]


Leuke opdracht dan : dus om een voldoende voor je stage te halen moet je op een achterhaalde manier werken?
Het is een opdracht die al van een afstudeerstagiair was die de opdracht niet afgekregen had. Nu heb ik dezelfde opdracht gekregen, waarbij ik opnieuw ben begonnen met het uitzoeken van de beschikbare schijfletters en groepen.

Ik heb ondertussen een VBScript gemaakt die er naar mijn doen best goed uitziet :9
Hij is nog niet af, maar hij komt aardig in de buurt van de opdracht.
Question Mark schreef op donderdag 26 februari 2015 @ 09:34:

Kijk dan ook even naar de commando's [url=url=https://technet.microsoft.com/en-us/library/cc732535.aspx]dsget en dsquery[/]. Daarmee kun je vanuit een prompt AD-property's van bv een gebruiker opvragen.
Bedankt voor de informatie, ik ga zeker opzoeken of ik de commando's kan gebruiken.

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 00:12

The Eagle

I wear my sunglasses at night

Wat let je trouwens om de opdracht dubbel uit te werken en aan je stagebegeleider te laten zien? Dus met BAT / VBS en met GPO. Kan ie zelf kiezen en ziet ie ook dat je de laatste kennis in huis hebt :)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
The Eagle schreef op donderdag 26 februari 2015 @ 15:53:
Wat let je trouwens om de opdracht dubbel uit te werken en aan je stagebegeleider te laten zien? Dus met BAT / VBS en met GPO. Kan ie zelf kiezen en ziet ie ook dat je de laatste kennis in huis hebt :)
Nou, met het 'intakegesprek' was er al een beetje over de opdracht verteld. En hij heeft daarna gezegd dat hij het graag in een batchbestand zou willen, teminste via een script.

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:15
Mirte_ schreef op donderdag 26 februari 2015 @ 15:28:
[...]


Het is een opdracht die al van een afstudeerstagiair was die de opdracht niet afgekregen had. Nu heb ik dezelfde opdracht gekregen, waarbij ik opnieuw ben begonnen met het uitzoeken van de beschikbare schijfletters en groepen.

Ik heb ondertussen een VBScript gemaakt die er naar mijn doen best goed uitziet :9
Hij is nog niet af, maar hij komt aardig in de buurt van de opdracht.


[...]


Bedankt voor de informatie, ik ga zeker opzoeken of ik de commando's kan gebruiken.
Even voor de goede orde : ik bedoelde het niet om jou af te kraken om aan te vallen hoor, ik verbaas mij gewoon erg vaak over stage en schoolopdrachten welke vaak erg ver van de realiteit verwijderd zijn.
Op mijn werk kom ik het met stagemedewerkers ook vaak genoeg tegen dat men opdrachten krijgt mbt server 2003 terwijl dit gewoon al bijna out of support is. Powershell is ruim 8 jaar na de release op veel scholen ook nog steeds een onbekend iets waar totaal geen aandacht aan besteed wordt.

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 00:12

The Eagle

I wear my sunglasses at night

Mirte_ schreef op donderdag 26 februari 2015 @ 16:14:
[...]


Nou, met het 'intakegesprek' was er al een beetje over de opdracht verteld. En hij heeft daarna gezegd dat hij het graag in een batchbestand zou willen, teminste via een script.
Dat sluit toch niet uit dat je hem twee oplossingen kan bieden? Als ie maar tevreden is :)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • aZuL2001
  • Registratie: September 2002
  • Laatst online: 07-10 15:18
"Ja maar dat is twee keer zoveel werk :( "

;)

Abort, Retry, Quake ???


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
aZuL2001 schreef op donderdag 26 februari 2015 @ 17:54:
"Ja maar dat is twee keer zoveel werk :( "

;)
Het kan wel van te voren aangegeven worden en als nog een kort "verslag" op tafel worden gegooid met de voordelen van PS/GPO en waarom de stagair hiervoor gekozen zou hebben.

het script hoeft niet perse geschreven te worden, al mag dit geen 15 minuten werk zijn.

Beetje eigen initiatief tonen :*)

Edit: Stagair zou eigenlijk, dan wel in zijn/haar vrije tijd, wel even moeten kijken naar wat "vraagteken mark" heeft gepost:

Question Mark in "Verwijzen naar het bedrijf in een batchbestand"

[ Voor 19% gewijzigd door Squ1zZy op 27-02-2015 07:13 ]


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Ik heb gezocht naar informatie over dsget en dsquery.
Question Mark schreef op donderdag 26 februari 2015 @ 09:34:
Kijk dan ook even naar de commando's dsget en dsquery. Daarmee kun je vanuit een prompt AD-property's van bv een gebruiker opvragen.
Bij het volgende script krijg ik de foutmelding:
Regel: 22
Teken: 1
Fout: Instructie wordt verwacht
Code: 800A0400



'start script

On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo")
Set objNetwork = CreateObject("Wscript.Network")

'find user name

strUserPath = "dsquery user -name "*" -limit 500 | dsget user -dn"
Set objUser = GetObject(strUserPath)

'find user group's

For Each strGroup in objUser.MemberOf
strGroupPath = "dsquery user -name "*" -limit 500 | dsget user -company"
Set objGroup = GetObject(strGroupPath)
strGroupName = objGroup.CN

'if user is a member of a group then map network drive

Case objGroup.CN = "Company"
objNetwork.MapNetworkDrive "P:", "\\Server\DATA\Company\Public"
Set objNetwork = Wscript.CreateObject("WScript.Network")
'
End Select
Next

'end script


Ik heb het ook geprobeerd zonder objGroup.CN voor "Company" te zetten.

Acties:
  • 0 Henk 'm!

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 07-10 16:11

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Als ik een cmd-prompt open op mijn werkplek, en onderstaande regel draai, krijg ik keurig mijn ingevulde Company uit de AD als resultaat terug.

code:
1
2
3
4
dsquery user -name %username% | dsget user -company
  company
  <<<knip>>>
dsget succeeded


Bovenstaande opdrachtregel zou je dus moeten kunnen gebruiken in je script. Let wel dat dit een cmd-regel is (je vraag ging immers ook over een batch-file), terwijl je nu een vbs-script aan het maken bent.

Ik ben absoluut geen VBS-goeroe, maar binnen VBS zou je het als volgt op kunnen lossen:

code:
1
Set objUser = GetObject("LDAP://CN=johndoe,OU=Users,DC=ss64,DC=com")

Je maakt hier een variable (of beter gezegd een object) "objUser" aan. "Objuser.Company" zou dan de afdeling van de user moeten zijn.

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Ik heb de code geprobeerd:
code:
1
 C:\Windows\System32>dsquery user -name %username% | dsget user -company


dsget is mislukt:Doelobject voor deze opdracht ontbreekt.

code:
1
 C:\Users\gebruikersnaam\desktop>dsqeury user -name %username% | dsget user -company >test.txt


dsget is mislukt:Doelobject voor deze opdracht ontbreekt.

En het tekstbestand is leeg.

Als ik de %username% vervang door "*" krijg ik wel alle bedrijven te zien, en door -dn te gebruiken ook de volledige naam.

Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
%username% is een environment variable. Dit moet je terug kunnen zien in een prompt met de commando 'set'. Als je in een prompt '%username%' intikt dan krijg je wel je username terug? Niet toevallig met de commande 'set' een andere waarde ingevuld?

Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Met %username% krijg ik mijn username te zien.
Hoe bedoel je met 'set' een andere waarde ingevuld?

Ik heb de volgende commando's met 'set':

Set objSysInfo = CreateObject("ADSystemInfo")
Set objNetwork = CreateObject("Wscript.Network")
Set objUser = GetObject("LDAP://cn=,ou=,dc=")
Set objCompany = GetObject(strGroupPath)

Acties:
  • 0 Henk 'm!

Verwijderd

Probeer om te beginnen het verschil tussen CMD, BATCH en VBS te snappen.

Het volgende is VBS en laat je zien wat er in de AD onder "Company" is ingevuld bij de gebruiker die het script uitvoert:

On Error Resume Next
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strCompany = objUser.company

wscript.echo strCompany

Op de plaats van "wscript.echo........." mag je nu gaan scripten wat er moet gebeuren als strCompany een bepaalde waarde heeft.


Maareh..... zitten alle gebruikers voor een bepaald bedrijf ook allemaal in dezelfde OU in de AD? Dan zou je dat ook als uitgangspunt kunnen nemen. Je bent dan namelijk niet afhankelijk van typfouten in de aangeleverde bedrijfsnaam.

[ Voor 18% gewijzigd door Verwijderd op 27-02-2015 13:49 ]


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
In de AD zitten de gebruikers in een OU met de bedrijfsnaam, dit weer in een OU zitten met de locatie.
Bijvoorbeeld:

Organistatie.local
- Locatie
- Bedrijfsnaam 1
- Bedrijfsnaam 2
- enz.

Maar om de netwerkschijven toe gevoegen wil ik de bedrijfsnaam (bij de eigenschappen van de gebruiker) gebruiken om de juiste netwerkschijf toe te voegen.


Het volgende zal waarschijnlijk niet kloppen maar ik heb dit in een testscript gezet:

On Error Resume Next
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strCompany = objUser.company

wscript.echo strCompany

'if user is a member of a group then map network drive and printers

Select Case strCompany

Case "Bedrijfsnaam"
objNetwork.MapNetworkDrive "A:", "\\Server\DATA\Bedrijfsnaam"

Hier staan er nog z'n 4 van onder.

Als ik het script test krijg ik een venster met de bedrijfsnaam waar ik in zit.
Heb ik een commando fout gebruikt?

Acties:
  • 0 Henk 'm!

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 07-10 16:11

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Mirte_ schreef op vrijdag 27 februari 2015 @ 14:13:
Als ik het script test krijg ik een venster met de bedrijfsnaam waar ik in zit.
Heb ik een commando fout gebruikt?
Dat klopt toch precies, dat is wat hier toch ook verteld wordt om te doen?
Dat stukje code tot deze regel "vind" de bedrijfsnaam en plaatst deze in variable strCompany. Met "wscript.echo" vertel je dat je een "echo" van deze info naar een venster wilt.

Je script doet tot hier precies wat je verteld wat je moet doen.

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Bedankt voor de uitleg :)

Maar nadat de bedrijfsnaam dan in de variable strCompany is gezet, wordt deze dan niet gebruikt om de netwerkschijf toe te voegen met de volgende commando's?

Select Case strCompany
Case "Bedrijfsnaam"
objNetwork.MapNetworkDrive "A:", "\\Server\DATA\Bedrijfsnaam"

En kan ik door wscript.echo strCompany weg te halen ook het venster 'weghalen'?

Acties:
  • 0 Henk 'm!

Verwijderd

Die laatste regel gaat niets doen zonder dat je eerst gaat uitleggen wat "objNetwork" precies is. En dat doe je bijvoorbeeld zo:

Set objNetwork = CreateObject("WScript.Network")

Daarna zou je zoiets kunnen gebruiken:

Select case strCompany
case "X"
objNetwork.MapNetworkDrive "Z:", "\\Server\ShareX", true
case "Y"
objNetwork.MapNetworkDrive "Z:", "\\Server\ShareY, true
End Select

Helemaal netjes is het om daarna het volgende te doen:

Set objNetwork = nothing
Set objUser = nothing
Set objSysInfo = nothing

Maar genoeg voorgekauwd zo. Zoek zelf nu maar eens uit hoe je deze drivemapping een bepaalde naam kunt geven (bijv. HOME).

En dan hebben we het nog niet over error handling gehad......
Je kunt het script ook output laten genereren naar Internet Explorer. Dat doen wij hier ook. Ziet er gelikt uit voor de gebruikers en ze kunnen zien wat er gebeurt tijdens het uitvoeren van het script.

[ Voor 27% gewijzigd door Verwijderd op 27-02-2015 16:19 ]


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Bedankt voor Set objNetwork = CreateObject("WScript.Network")

blijkbaar had ik die ook in een ander script staan, maar vergeten over te nemen

Het script werkt nu alweer beter, ik ga maandag uitzoeken hoe ik het script helemaal werkend krijg. :P
Verwijderd schreef op vrijdag 27 februari 2015 @ 16:15:
Set objNetwork = nothing
Set objUser = nothing
Set objSysInfo = nothing
Ik heb het volgende al boven mijn script staan:
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strCompany = objUser.company
Set objNetwork = CreateObject("WScript.Network")

Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
Als voorbeeld geef ik aan hoe het zou kunnen in PowerShell.
Dit als voorbeeld hoe makkelijk het is in PowerShell of voor diegene die het ooit in PS willen doen:

code:
1
2
3
4
5
6
7
8
9
10
$strName = $env:username
$strFilter = "(&(objectCategory=User)(samAccountName=$strName))"

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $strFilter

$objPath = $objSearcher.FindOne()
$objUser = $objPath.GetDirectoryEntry()

New-PSDrive -Name "K" -PSProvider FileSystem -Root "\\servernaam\$objUser.company" -Persist


Regel 1: Maak een variable strName met, door de environment variable opgehaalde, usernaam.
Regel 2: Maak een variable voor de filter in AD
Regel 4: Nieuw instance via .NET of COM (nodig voor AD connectie)
Regel 5: Maak gebruik van de bovenstaande filter voor de instance
Regel 7: Zoek via de instance naar het object
Regel 8: Haal gegevens op van het object
Regel 10: Nieuw persistant drive met als letter K

De $objUser.company is het attribute, company, binnen AD voor het object...

Ik kan ook een voorbeeld geven in VBS als je wilt. Laat maar weten hoe ver je gekomen bent.

Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:15
Squ1zZy schreef op zaterdag 28 februari 2015 @ 10:34:
Als voorbeeld geef ik aan hoe het zou kunnen in PowerShell.
Dit als voorbeeld hoe makkelijk het is in PowerShell of voor diegene die het ooit in PS willen doen:

code:
1
2
3
4
5
6
7
8
9
10
$strName = $env:username
$strFilter = "(&(objectCategory=User)(samAccountName=$strName))"

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $strFilter

$objPath = $objSearcher.FindOne()
$objUser = $objPath.GetDirectoryEntry()

New-PSDrive -Name "K" -PSProvider FileSystem -Root "\\servernaam\$objUser.company" -Persist


Regel 1: Maak een variable strName met, door de environment variable opgehaalde, usernaam.
Regel 2: Maak een variable voor de filter in AD
Regel 4: Nieuw instance via .NET of COM (nodig voor AD connectie)
Regel 5: Maak gebruik van de bovenstaande filter voor de instance
Regel 7: Zoek via de instance naar het object
Regel 8: Haal gegevens op van het object
Regel 10: Nieuw persistant drive met als letter K

De $objUser.company is het attribute, company, binnen AD voor het object...

Ik kan ook een voorbeeld geven in VBS als je wilt. Laat maar weten hoe ver je gekomen bent.
Ik krijg zelf altijd hoofdpijn van "str" in PS code (PS is PS een geen VB).
Bij PS is het aan te bevelen om gewoon leesbare variables te hanteren.

Je script zit overigens wel goed in elkaar hoor.
(Ik moet wel toegeven dat ik bij test scriptjes nog wel vaak $a etc gebruik. Productie scripts krijgen altijd zeer duidelijke variables waarbij je aan de naam van de var al kunt raden wat deze doet).

[ Voor 8% gewijzigd door Killah_Priest op 28-02-2015 13:31 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Persoonlijk vind ik PS een heel krachtig instrument. Ik zou onze VBS-jes (paar jaar geleden gebouwd, toen hadden ze hier nog KIX) er graag door willen vervangen. Alleen is PS toch wel een hele andere manier van denken en dat ga ik er bij mijn collega's echt niet 1-2-3 inkrijgen.

Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Squ1zZy schreef op zaterdag 28 februari 2015 @ 10:34:

code:
1
$strName = New-PSDrive -Name "K" -PSProvider FileSystem -Root "\\servernaam\$objUser.company" -Persist


Regel 10: Nieuw persistant drive met als letter K
Je hoeft -persist toch niet te gebruiken in een logonscript?
Omdat er dan het script elke keer bij het opstarten opnieuw gelezen wordt?



Mijn script werkt! _/-\o_

Allemaal bedankt voor de informatie en tijd ;)

[ Voor 9% gewijzigd door Mirte_ op 02-03-2015 08:28 ]


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
Mirte_ schreef op maandag 02 maart 2015 @ 08:10:
[...]


Je hoeft -persist toch niet te gebruiken in een logonscript?
Omdat er dan het script elke keer bij het opstarten opnieuw gelezen wordt?



Mijn script werkt! _/-\o_

Allemaal bedankt voor de informatie en tijd ;)
Correct. Je zou een check erin kunnen bouwen om te controleren of de mapping al bestaat.

Er zit ook nog geen error handling in.

Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Ik ben allang blij dat ik de basis werkend heb. :P

Ik ga zo uitzoeken hoever ik kom met de error handeling en check.
Pagina: 1