jeg vil gerne ændre printer- og sharenavne på alle netværksprintere i
mit firma. Jeg ville gøre det udenfor arbejdstid og så i en periode
lægge ind i login scriptet, at der på hver enkelt pc checkes om hver
enkelt printer er installeret. Hvis printeren ikke er installeret,
skal scriptet bare gå videre til næste printer, men er printeren
installeret, skal denne slettes og så installeres med det nye navn.
Min udfordring er, at jeg ikke kan få afinstalleret printeren med det
gamle navn. Jeg har prøvet med en masse forskelligt i stil med:
if not exist \\fs\OKIC5600 goto ok_OKIC5600
rundll32 printui.dll,PrintUIEntry /dn /n\\fs\OKIC5600 /j"OKI C5600"
rundll32 printui.dll,PrintUIEntry /in /n\\fs\ANBLOkiC5600 /j"Herlev -
Stuen - ANBL - Oki C5600"
:ok_OKIC5600
FS er navnet på print serveren og OKIC5600 er det gamle share navn på
printeren. Tilsyneladende gør den første linie, at scriptet springer
delen med at afinstallere og installere over. Kan det skyldes, at jeg
angiver et share på serveren, som ikke længere findes, da jeg har
ændret dette? Hvordan får jeg scriptet til at checke, om der er
installeret en specifik printer på pc'en?
På forhånd tak,
Ronnie
<ronnie....@gmail.com> skrev i meddelelsen
news:b192020f-b74d-4b68...@g3g2000pre.googlegroups.com...
Hej Ronnie
Vil det ikke være nemmere for dig, at måle på en enkelt fil. feks
DelPrint.txt.
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("c:\windows\DelPrint.txt") Then
Else
objFSO.CopyFile "\\servernavn\share\DelPrint.txt" , "c:\windows\"
Slet alle printere
Map de nye printere
End If
Alternativt kan du gøre det via Group Policy Preferences.
/Jesper
Hej Jesper,
hvis der er en nemmere måde at gøre det på, end det jeg har prøvet, så
er jeg åben for forslag. Eneste krav er, at det skal kunne ligge i
batch filen, der bruges til login scriptet, og det er kun de allerede
installerede printere, der skal installeres med de nye navne.
Kan jeg få dig til at uddybe, hvad du mener med at måle på en enkelt
fil?
Group policies er desværre ikke en mulighed i dette tilfælde.
Mvh
Ronnie
Hej Ronnie
Jeg er på vej ud af døren nu. Håber andre kan byde ind.
Men det du skal gøre i korte træk er som følger:
1. Lav en text fil - ondøb den til feks . delprint.vbs - indsæt den kode jeg
listede tidligere
2 Slet alle printere fra vbscriptet (google har masser eksempler)
3. Map de nye printere i vbs (google)
4. kald dit nye vbscript fra din bat eller cmd fil
Hvis du går kold, så skal jeg nok prøve at give dig et mere detaljeret
eksempel i aften eller hen over weekenden.
/Jesper
Hej Jesper,
tusind tak for din hjælp indtil videre.
Jeg er med så langt, at jeg skal lave et VB script, som jeg kalder fra
mit login script, men jeg må nok indrømme, at jeg står lidt af på,
hvordan jeg laver dette. Jeg er jo også kun interesseret i at
installere de printere, som var installeret i forvejen med de gamle
navne, da det ikke er meningen, at nogle skal have alle printere
installeret, men hvordan får jeg lige kodet denne del af det?
Mvh
Ronnie
Hej Ronnie
Fik du løst dit problem?.
/Jesper
Hej Jesper,
nej, jeg har desværre ikke fået løst det endnu.
Mvh
Ronnie
<ronnie....@gmail.com> skrev i meddelelsen
news:4a56c547-ea27-427c...@x13g2000yqf.googlegroups.com...
> On 22 Feb., 17:49, "Jesper Ravn" <jesper_r...@hotmail.com> wrote:
>> > Jeg er med så langt, at jeg skal lave et VB script, som jeg kalder fra
>> > mit login script, men jeg må nok indrømme, at jeg står lidt af på,
>> > hvordan jeg laver dette. Jeg er jo også kun interesseret i at
>> > installere de printere, som var installeret i forvejen med de gamle
>> > navne, da det ikke er meningen, at nogle skal have alle printere
>> > installeret, men hvordan får jeg lige kodet denne del af det?
Hej Ronnie
Her er en måde at gøre det på.
Opret en vbs-fil og kald det fra jeres loginscript. Se nedenstående
kommando.
start /wait \\servernavn\delprint.vbs
indholdet af delprint.vbs kan være som følger.
Sletter alle tidligere printere.
Mapper herefter de nye printerne ud, basseret på hvilken gruppe brugerne er
medlem af.
Sig til hvis du er i tvil om noget. Husk at rette vbs scriptet til med de
rigtige servernavne og grupper.
/Jesper
'**************************************************************************
Dim oADObject, oGroupList, sUserAdsPath
Dim wshnetwork,printerlist
on error resume next
'***************** Find Brugernavn
******************************************
Dim Domain,UserObj, Group, GroupObj, UserName, nUser,wsh, sArray
Set nUser = WScript.CreateObject("Wscript.Network")
Domain = nUser.UserDomain
UserName = nUser.UserName
Set UserObj = GetObject("WinNT://" & Domain & "/" & UserName)
sUserAdsPath = GetUserDN()
Set oADObject = GetObject("LDAP://" & sUserAdsPath) ' AD object
'*****************Find Grupper + Nested Grupper*********************
Function GetUserDN()
On Error Resume Next
Dim oADSysInfo
Set oADSysInfo = CreateObject("ADSystemInfo")
GetUserDN = oADSysInfo.UserName
If err <> 0 Then
GetUserDN = "" ' Null String
Err.Clear
End If
Set oADSysInfo = Nothing
End Function
Function IsMember(sGroup)
If IsEmpty(oGroupList) Then
Set oGroupList = CreateObject("Scripting.Dictionary")
Call LoadGroups(oADObject)
End If
IsMember = oGroupList.Exists(sGroup)
End Function
Sub LoadGroups(oADObject)
On Error Resume Next
Dim colsGroups, oGroup, j
oGroupList.CompareMode = vbTextCompare
colsGroups = oADObject.memberOf
If IsEmpty(colsGroups) Then
Exit Sub
End If
If TypeName(colsGroups) = "String" Then
Set oGroup = GetObject("LDAP://" & colsGroups)
If Not oGroupList.Exists(oGroup.sAMAccountName) Then
oGroupList(oGroup.sAMAccountName) = True
Call LoadGroups(oGroup)
End If
Set oGroup = Nothing
Exit Sub
End If
For j = 0 To UBound(colsGroups)
Set oGroup = GetObject("LDAP://" & colsGroups(j))
If Not oGroupList.Exists(oGroup.sAMAccountName) Then
oGroupList(oGroup.sAMAccountName) = True
Call LoadGroups(oGroup)
End If
Next
Set oGroup = Nothing
End Sub
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("c:\windows\DelPrint.txt") Then
Else
objFSO.CopyFile "\\servernavn\share\DelPrint.txt" , "c:\windows\"
'Slet alle printere
set wshnetwork=wscript.createobject("wscript.network")
set printerlist = wshnetwork.EnumPrinterConnections
for idx=1 to printerlist.Count step 2
wshnetwork.removeprinterconnection printerlist(idx) , true, true
next
'Map nye printere basseret på grupper
If IsMember("Salg") Then
wshnetwork.addwindowsprinterconnection "\\servernavn\HP4600"
wshnetwork.addwindowsprinterconnection "\\servernavn\HP4700"
wshnetwork.setdefaultprinter "\\servernavn\HP4700"
End if
If IsMember("Finans") Then
wshnetwork.addwindowsprinterconnection "\\servernavn\Xerox2128"
wshnetwork.addwindowsprinterconnection "\\servernavn\HP3800"
wshnetwork.setdefaultprinter "\\servernavn\HP3800"
End if
End If
'************************************************************
Hej Jesper,
det er verdensklasse, det du har gang i her :)
Jeg har nu styr på at få slettet alle netværksprinterne via VB
scriptet, men skal lige spørge til de grupper, du bruger til at mappe
de nye printere. Er det bare alm. AD grupper, hvor jeg enten kan bruge
de eksisterende eller lave nye efter behov?
Hvad er det i øvrigt lige denne del gør:
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("c:\windows\DelPrint.txt") Then
Else
objFSO.CopyFile "\\servernavn\share\DelPrint.txt" , "c:\windows\"
Mvh
Ronnie
Hvis filen ikke allerede eksisterer oprettes den og resten af scriptet
kører. Næste gang scriptet kører springer den over alle de uartige dele med
sletning og installation af printere.
Keller
Ok, men jeg kan ikke se, hvornår denne fil bliver oprettet. Skal jeg
selv lave delprint.txt filen og hvad skal den evt. indeholde? Jeg kan
kun se, at jeg laver en delprint.vbs fil, som jeg så kalder fra login
scriptet.
Mvh
Ronnie
>>Dim objFSO
> >Set objFSO = CreateObject("Scripting.FileSystemObject")
>
> >If objFSO.FileExists("c:\windows\DelPrint.txt") Then
> >Else
> >objFSO.CopyFile "\\servernavn\share\DelPrint.txt" , "c:\windows\"
>Ok, men jeg kan ikke se, hvornår denne fil bliver oprettet. Skal jeg
>selv lave delprint.txt filen og hvad skal den evt. indeholde? Jeg kan
>kun se, at jeg laver en delprint.vbs fil, som jeg så kalder fra login
>scriptet.
Du behøver ikke lave den, tværtimod.
Koden læses som følger:
"Hvis DelPrint.txt existerer, gør det der stå mellem Then og Else"
(i dette tilfælde ingenting, altså skal der ikke gøres noget hvis filen
allerede er der)
"Hvis den ikke eksisterer, gør det der står mellem Else og det tilhørende
End If"
(i dette tilfælde, slet alle printere og installer nogle nye).
Med andre ord, filen oprettes første gang delprint.vbs kører og sikrer at
scriptet ikke sletter og opretter printerne ved alle de efterfølgende
logins.
Keller
Det giver fin mening mht. then og else, men jeg kan ikke se hvor i
delprint.vbs at delprint.txt oprettes og kopieres til "c:\windows\".
Mvh
Ronnie
Hej Ronnie
Du skal bare oprette en tom txt fil, som du kalder DelPrint.txt.
Den placerer du på en given server i en shared folder.
kommandoen "objFSO.CopyFile" kopierer filen ned til c:\windows lokalt på
computerne.
objFSO.CopyFile "\\servernavn\share\DelPrint.txt" , "c:\windows\"
Håber det kan bringe dig lidt videre.
/Jesper
>> Med andre ord, filen oprettes første gang delprint.vbs kører og sikrer at
>> scriptet ikke sletter og opretter printerne ved alle de efterfølgende
>> logins.
>>
>> Keller
>
>Det giver fin mening mht. then og else, men jeg kan ikke se hvor i
>delprint.vbs at delprint.txt oprettes og kopieres til "c:\windows\".
Ahh, nu forstår jeg hvad du mener. Som Jesper har svaret skal den
selvfølgelig oprettes og være tilgængelig på det share du har valgt. Et
alternativ er at oprette den direkte i scriptet med noget i retning af
objFSO.CreateTextFile("c:\windows\DelPrint.txt")
Keller
Super, så er jeg snart ved at være der.
Er grupperne som styrer installation af de nye printere AD grupper,
som jeg kan oprette efter behov?
Nu har jeg testet det, og det er AD grupper, som Jesper mener, men det
vidste I kloge hoveder garanteret allerede ;)
Nu ser det hele ud til at virke, og jeg har det største smil i hele
hovedet. I er for seje og én af grundene til, at jeg elsker
internettet og nyhedsgrupper. Mange tak for hjælpen.
Ja det er lige netop AD grupper som scriptet kigger efter.
En god m�de hvis du kan debug/test script i fremtiden, i stedet for at logge
af og p� hele tiden, er at kopier scriptet direkte ud p� dit skrivebord og
s� k�rer det derfra, s� vil du ogs� kunne se hvis der er en fejl i scriptet
f. eks.
Det er super du har f�et det til at virke, jeg har personligt lige brugt en
modificeret udgave af scriptet hos en kunde som ville mappe nogen
forskellige default printere udfra nogen grupper.
p.s Jesper nyder du din ferie? :D
<ronnie....@gmail.com> skrev i meddelelsen
news:624819e2-65d2-4ba7...@q9g2000yqc.googlegroups.com...
> On 6 Mar., 12:28, ronnie.zieg...@gmail.com wrote:
>> On 6 Mar., 09:50, "Carsten Keller" <c...@no-more-swen.iha.dk> wrote:
>>
>>
>>
>>
>>
>> > <ronnie.zieg...@gmail.com> wrote in message
>>
>> >news:e1665602-db15-44b6...@s28g2000vbp.googlegroups.com...
>>
>> > >> Med andre ord, filen oprettes f�rste gang delprint.vbs k�rer og
>> > >> sikrer at
>> > >> scriptet ikke sletter og opretter printerne ved alle de
>> > >> efterf�lgende
>> > >> logins.
>>
>> > >> Keller
>>
>> > >Det giver fin mening mht. then og else, men jeg kan ikke se hvor i
>> > >delprint.vbs at delprint.txt oprettes og kopieres til "c:\windows\".
>>
>> > Ahh, nu forst�r jeg hvad du mener. Som Jesper har svaret skal den
>> > selvf�lgelig oprettes og v�re tilg�ngelig p� det share du har valgt. Et
>> > alternativ er at oprette den direkte i scriptet med noget i retning af
>>
>> > objFSO.CreateTextFile("c:\windows\DelPrint.txt")
>>
>> > Keller
>>
>> Super, s� er jeg snart ved at v�re der.
>>
>> Er grupperne som styrer installation af de nye printere AD grupper,
>> som jeg kan oprette efter behov?- Skjul tekst i anf�rselstegn -
>>
>> - Vis tekst i anf�rselstegn -
>
> Nu har jeg testet det, og det er AD grupper, som Jesper mener, men det
> vidste I kloge hoveder garanteret allerede ;)
>
> Nu ser det hele ud til at virke, og jeg har det st�rste smil i hele
> hovedet. I er for seje og �n af grundene til, at jeg elsker
> internettet og nyhedsgrupper. Mange tak for hj�lpen.