Hallo zusammen,
ich habe folgendes Problem:
Ich habe eine Konfigurationsgruppe in der 3000 Rechner stehen.
Jetzt würde ich gerne aus einem erzeugten Filter auf IP Adressen diese gefunden Rechner in eine neue Konfigruppe verschieben, um die Konfigruppe zu strukturieren.
Ist dies möglich? wen ja wie? oder gibt es eine andere Möglichkeit?
Im Moment wird alles manuell mit deaktivieren Rechner und verschieben in neue Gruppe gemacht.
Ich würde dies gerne automatisieren.
Für einen Tip wäre ich dankbar
Gruß
Haku
Konfigruppen aus Fiter erzeugen
Moderators: MVogt, moderators
-
Hendrik_Ambrosius
- Moderator

- Posts: 8095
- Joined: 13. Dec 2004, 23:10
- Location: Adendorf/Lüneburg
Re: Konfigruppen aus Fiter erzeugen
Erst die PCs aus der Konfigurationsgruppe löschen so dass sie zu nicht zugeordneten Computern werden, dann Filteraktionen nutzen um sie zuzuordnen.
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
-
Olaf Meuther
- Posts: 120
- Joined: 30. Mar 2007, 09:47
- Location: Düsseldorf
- Contact:
Re: Konfigruppen aus Fiter erzeugen
Sehr umständlich, Henrik Ambroisius, außer man macht es programmatisch. Außerdem nimmt es nicht die dem PC direkt zugewiesene Softwarepakete und Verteiloptionen mit. Hier drei Routinen, die hier helfen könnten.
TSQL-Statement for the Grundroutine:
PROCEDURE dbo.movingPC(@neuerKonfigurationsgruppe varchar(255), @IPString varchar(12)) AS
DELCARE @Computer varchar(50)
DECLARE @neueTreeID uniqueidentifier
BEGIN
SELECT @neueTreeID = ID FROM dbo.TreeDefinition WHERE Name = @neueKonfigurationsgruppe
DECLARE myComputers CURSOR FOR
SELECT Name FROM dbo.Clients WHERE client_id = (SELECT client_id FROM dbo.InvComputer WHERE
IPAddress Like @IPString
OPEN myComputers
FETCH NEXT FROM myComputers INTO @Computer
WHILE @@FETCH_STATUS = 0
BEGIN
dbo.movePC @Computer, @neueTreeID, emp44Admin, 0
FETCH NEXT FROM myComputers INTO @Computer
END
CLOSE myComputers
DEALLOCATE myComuters
END
TSQL-Statement for the movePC-Routine:
PROCEDURE dbo.movePC(@PCName varchar(255), @TreeID varchar(255), @Subscriber varchar(255), @WOLZeitA INTEGER) AS
DECLARE @Nummer INTEGER
DECLARE @FehlerText varchar(255)
DECLARE @SubScriberID INTEGER
DECLARE @AuftragsName varchar(255)
DECLARE @ActionType INTEGER
DECLARE @ActionCode INTEGER
DECLARE @TargetObjectType INTEGER
DECLARE @AuftragsNummer INTEGER
DECLARE @SoftwareID uniqueidentifier
DECLARE @GroupID uniqueidentifier
DECLARE @DistCommands INTEGER
DECLARE @ScheduleString varchar(129)
DECLARE @RevokeCount INTEGER
DECLARE @PackageName varchar(255)
DECLARE @clientID INTEGER
DECLARE @DomainName varchar(255)
DECLARE @TreeOldID uniqueidentifier
DECLARE @newParentPath varchar(255)
DECLARE @oldParentPath varchar(255)
DECLARE @newGroupID uniqueidentifier
DECLARE @WOLZEIT INTEGER
DECLARE @isPXE INTEGER
DECLARE @SoftwareNamen varchar(255)
BEGIN
-- Anlage neue Konfigurationsgruppe
-- Subscriber holen
print '------ Vorarbeiten -------'
SELECT @TreeOldID = CONVERT(varchar(255), ID) FROM dbo.TreeDefinition WHERE name = @PCNAme
SELECT @oldParentPath = dbo.getGroupPath('', @TreeOldID, 0,'')
SELECT @Nummer = Count(*) FROM dbo.EmpExtSubscribers WHERE Name =@Subscriber
if(@Nummer = 0)
INSERT INTO dbo.EmpExtSubscribers (Name, ExpirationDate) VALUES (@Subscriber, '01.01.2020')
SELECT @SubScriberID= ID FROM dbo.EmpExtSubscribers WHERE Name =@Subscriber
--Auftrag einstellen
print '------ Anlage neue Konfigurationsgruppe PC -------'
SET @AuftragsName = 'Anlonfi_' + @PCName + '_' + CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 1
SET @ActionCode = 0
SET @TargetObjectType = 3
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name, ActionType, ActionCode, TargetObjectType,
Status) VALUES (@SubScriberID, @AuftragsName, @ActionType, @ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
SELECT @newParentPath = dbo.getGroupPath('', @TreeID,0,'')
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'ParentPath', @newParentPath)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'GroupName', @PCName)
SELECT @Nummer = Status FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
print @FehlerText
END
else
BEGIN
print '------ Neuer Ort ermitteln -------'
SELECT @newGroupID = ID FROM dbo.TreeDefinition WHERE name= @PCName AND Parent= @TreeID
print '------ Softwareübertragen -------'
-- Anlage neue Konfigurationsgruppe erledigt.
-- Software übertragen
DECLARE mySoftware CURSOR FOR
SELECT dbo.Software.SoftwareID,Empirum44.dbo.CompConfGrSoft.TreeID
FROM dbo.Software, Empirum44.dbo.CompConfGrSoft
WHERE dbo.Software.SoftwareID = dbo.CompConfGrSoft.SoftwareID
AND dbo.CompConfGrSoft.TreeID = @TreeOldID
OPEN mySoftware
FETCH NEXT FROM mySoftware INTO @SoftwareID, @GroupID
WHILE @@FETCH_STATUS = 0
BEGIN
if (@Nummer < 6)
BEGIN
-- Software zur neuen Konfigurationsgruppe hinzufügen:
print '----- SoftwarePakete übertragen ----'
SELECT @PackageName = PackageName FROM dbo.Software
WHERE SoftwareID = @SoftwareID
SET @AuftragsName = 'SWKonf_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 5
SET @ActionCode = 10
SET @TargetObjectType = 2
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name, ActionType,
ActionCode, TargetObjectType, Status) VALUES (@SubScriberID,
@AuftragsName, @ActionType, @ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'GroupID', @newGroupID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'PackageName', @PackageName)
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
else
BEGIN
-- Software zur neuen Konfigurationsgruppe hinzugefügt
-- Softwareparameter zur neuen Konfigurationsgruppe hinzufügen
SELECT @Nummer= Count(*) FROM dbo.CompGrSwProp
WHERE GroupID = @TreeOldID AND SoftwareID = @SoftwareID
if (@Nummer <> 0)
BEGIN
print '----- Übertrage Verteiloptionen -----'
SELECT @DistCommands= DistCommands FROM
dbo.CompGrSwProp WHERE GroupID = @TreeOldID
AND SoftwareID = @SoftwareID
SET @AuftragsName = 'ParWKonf_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 5
SET @ActionCode = 23
SET @TargetObjectType = 2
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers,
Name, ActionType, ActionCode, TargetObjectType,
Status) VALUES (@SubScriberID, @AuftragsName,
@ActionType, @ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue,
Name, Value) VALUES
(@AuftragsNummer, 'GroupID', @newGroupID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue,
Name, Value) VALUES
(@AuftragsNummer, 'PackageName',
@PackageName)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue,
Name, Value) VALUES
(@AuftragsNummer, 'DistributionCommand',
@DistCommands)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue,
Name, Value) VALUES
(@AuftragsNummer, 'SchedulerString', "")
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM
dbo.EmpTaskQueue WHERE Name =
@AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText
FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
END
END
END
-- Softwareparameter zur neuen Softwaregruppe hinzugefügt.
FETCH NEXT FROM mySoftware INTO @SoftwareID, @GroupID
END
CLOSE mySoftware
DEALLOCATE mySoftware
-- PC aus alter Konfigurationsgruppe löschen
SET @Nummer = 0
if (@Nummer < 6) --SPARPOTENIAL
BEGIN
print '------ PC in alter Gruppe löschen -------'
SET @AuftragsName = 'LoescheKG_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 2
SET @ActionCode = 0
SET @TargetObjectType = 3
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name, ActionType, ActionCode,
TargetObjectType, Status) VALUES (@SubScriberID, @AuftragsName, @ActionType,
@ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'GroupID', CONVERT(varchar(255), @TreeOldID))
SELECT @Nummer = Status FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
else
BEGIN
--PC in neuer Konfigurationsgruppe anlegen
print '------ PC in neue Gruppe einpflegen -------'
SET @AuftragsName = 'AnlPCKonf_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 5
SET @ActionCode = 10
SET @TargetObjectType = 1
SELECT @DomainName = Domain FROM dbo.clients WHERE name = @PCName
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name, ActionType,
ActionCode, TargetObjectType, Status) VALUES (@SubScriberID,
@AuftragsName, @ActionType, @ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'GroupID', @newGroupID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'ClientName', @PCName)
INSERT INTO Empirum44.dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'Domain', @DomainName)
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
else
BEGIN
--Aktiviere PC
SET @isPXE = 0
print '----- Aktiviere PC -----'
SET @WOLZEIT = 0
SET @ActionType = 5
SET @AuftragsName = 'Activate_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionCode = 20
SET @TargetObjectType = 1
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name,
ActionType, ActionCode, TargetObjectType, Status) VALUES
(@SubscriberID, @AuftragsName, @ActionType, @ActionCode,
@TargetObjectType, 1)
SELECT @AuftragsNummer = dbo.EmpTaskQueue.ID FROM
dbo.EmpTaskQueue WHERE dbo.EmpTaskQueue.Name =
@AuftragsName
SELECT @clientID = dbo.clients.client_ID FROM dbo.clients
WHERE dbo.clients.Name = @PCName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'ClientID', @clientID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'ClientName', @PCName)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'Domain', @DomainName)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'GroupID', @newGroupID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'PXE', @isPXE)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'WOL', @WOLZEIT)
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText
FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
END
END
END
else
BEGIN
SELECT @FehlerText = 'Auftrag wurde abgebrochen!'
print @FehlerText
END
END
END
TSQL-Statement for the getGroupPath-Routine:
Function dbo.getGroupPath(@Name varchar(255), @ID uniqueidentifier, @Nummer INTEGER, @varPath varchar(1012)) RETURNS varchar(1012) AS
BEGIN
DECLARE @varNummer INTEGER
DECLARE @varID uniqueidentifier
DECLARE @varSoftware varchar(1012)
BEGIN
SET @varNummer = @Nummer +1
if(@Nummer = 0)
BEGIN
if (@Name = '')
BEGIN
SELECT @varSoftware = name FROM dbo.TreeDefinition WHERE id = @ID
SET @varID = @ID;
SET @varPath = @varSoftware
END
else
BEGIN
SELECT @varID = ID FROM dbo.TreeDefinition WHERE Name = @Name
SET @varPath = @Name
END
END
else
SET @varID = @ID;
SELECT @varSoftware = A.Name, @varID = A.ID FROM dbo.TreeDefinition A, dbo.TreeDefinition B
WHERE A.ID = B.PARENT AND B.ID = @varID;
BEGIN
if(@varSoftware <> 'IDS_COMPUTER_GROUP_ROOT')
BEGIN
SET @varPath = @varSoftware + '\' + @varPath
SET @Nummer = @Nummer +1
SELECT @varPath = dbo.getGroupPath(@varSoftware, @varID,
@Nummer, @varPath)
END
END
return @varPath
END
END
Viel Spaß!
TSQL-Statement for the Grundroutine:
PROCEDURE dbo.movingPC(@neuerKonfigurationsgruppe varchar(255), @IPString varchar(12)) AS
DELCARE @Computer varchar(50)
DECLARE @neueTreeID uniqueidentifier
BEGIN
SELECT @neueTreeID = ID FROM dbo.TreeDefinition WHERE Name = @neueKonfigurationsgruppe
DECLARE myComputers CURSOR FOR
SELECT Name FROM dbo.Clients WHERE client_id = (SELECT client_id FROM dbo.InvComputer WHERE
IPAddress Like @IPString
OPEN myComputers
FETCH NEXT FROM myComputers INTO @Computer
WHILE @@FETCH_STATUS = 0
BEGIN
dbo.movePC @Computer, @neueTreeID, emp44Admin, 0
FETCH NEXT FROM myComputers INTO @Computer
END
CLOSE myComputers
DEALLOCATE myComuters
END
TSQL-Statement for the movePC-Routine:
PROCEDURE dbo.movePC(@PCName varchar(255), @TreeID varchar(255), @Subscriber varchar(255), @WOLZeitA INTEGER) AS
DECLARE @Nummer INTEGER
DECLARE @FehlerText varchar(255)
DECLARE @SubScriberID INTEGER
DECLARE @AuftragsName varchar(255)
DECLARE @ActionType INTEGER
DECLARE @ActionCode INTEGER
DECLARE @TargetObjectType INTEGER
DECLARE @AuftragsNummer INTEGER
DECLARE @SoftwareID uniqueidentifier
DECLARE @GroupID uniqueidentifier
DECLARE @DistCommands INTEGER
DECLARE @ScheduleString varchar(129)
DECLARE @RevokeCount INTEGER
DECLARE @PackageName varchar(255)
DECLARE @clientID INTEGER
DECLARE @DomainName varchar(255)
DECLARE @TreeOldID uniqueidentifier
DECLARE @newParentPath varchar(255)
DECLARE @oldParentPath varchar(255)
DECLARE @newGroupID uniqueidentifier
DECLARE @WOLZEIT INTEGER
DECLARE @isPXE INTEGER
DECLARE @SoftwareNamen varchar(255)
BEGIN
-- Anlage neue Konfigurationsgruppe
-- Subscriber holen
print '------ Vorarbeiten -------'
SELECT @TreeOldID = CONVERT(varchar(255), ID) FROM dbo.TreeDefinition WHERE name = @PCNAme
SELECT @oldParentPath = dbo.getGroupPath('', @TreeOldID, 0,'')
SELECT @Nummer = Count(*) FROM dbo.EmpExtSubscribers WHERE Name =@Subscriber
if(@Nummer = 0)
INSERT INTO dbo.EmpExtSubscribers (Name, ExpirationDate) VALUES (@Subscriber, '01.01.2020')
SELECT @SubScriberID= ID FROM dbo.EmpExtSubscribers WHERE Name =@Subscriber
--Auftrag einstellen
print '------ Anlage neue Konfigurationsgruppe PC -------'
SET @AuftragsName = 'Anlonfi_' + @PCName + '_' + CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 1
SET @ActionCode = 0
SET @TargetObjectType = 3
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name, ActionType, ActionCode, TargetObjectType,
Status) VALUES (@SubScriberID, @AuftragsName, @ActionType, @ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
SELECT @newParentPath = dbo.getGroupPath('', @TreeID,0,'')
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'ParentPath', @newParentPath)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'GroupName', @PCName)
SELECT @Nummer = Status FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
print @FehlerText
END
else
BEGIN
print '------ Neuer Ort ermitteln -------'
SELECT @newGroupID = ID FROM dbo.TreeDefinition WHERE name= @PCName AND Parent= @TreeID
print '------ Softwareübertragen -------'
-- Anlage neue Konfigurationsgruppe erledigt.
-- Software übertragen
DECLARE mySoftware CURSOR FOR
SELECT dbo.Software.SoftwareID,Empirum44.dbo.CompConfGrSoft.TreeID
FROM dbo.Software, Empirum44.dbo.CompConfGrSoft
WHERE dbo.Software.SoftwareID = dbo.CompConfGrSoft.SoftwareID
AND dbo.CompConfGrSoft.TreeID = @TreeOldID
OPEN mySoftware
FETCH NEXT FROM mySoftware INTO @SoftwareID, @GroupID
WHILE @@FETCH_STATUS = 0
BEGIN
if (@Nummer < 6)
BEGIN
-- Software zur neuen Konfigurationsgruppe hinzufügen:
print '----- SoftwarePakete übertragen ----'
SELECT @PackageName = PackageName FROM dbo.Software
WHERE SoftwareID = @SoftwareID
SET @AuftragsName = 'SWKonf_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 5
SET @ActionCode = 10
SET @TargetObjectType = 2
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name, ActionType,
ActionCode, TargetObjectType, Status) VALUES (@SubScriberID,
@AuftragsName, @ActionType, @ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'GroupID', @newGroupID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'PackageName', @PackageName)
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
else
BEGIN
-- Software zur neuen Konfigurationsgruppe hinzugefügt
-- Softwareparameter zur neuen Konfigurationsgruppe hinzufügen
SELECT @Nummer= Count(*) FROM dbo.CompGrSwProp
WHERE GroupID = @TreeOldID AND SoftwareID = @SoftwareID
if (@Nummer <> 0)
BEGIN
print '----- Übertrage Verteiloptionen -----'
SELECT @DistCommands= DistCommands FROM
dbo.CompGrSwProp WHERE GroupID = @TreeOldID
AND SoftwareID = @SoftwareID
SET @AuftragsName = 'ParWKonf_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 5
SET @ActionCode = 23
SET @TargetObjectType = 2
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers,
Name, ActionType, ActionCode, TargetObjectType,
Status) VALUES (@SubScriberID, @AuftragsName,
@ActionType, @ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue,
Name, Value) VALUES
(@AuftragsNummer, 'GroupID', @newGroupID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue,
Name, Value) VALUES
(@AuftragsNummer, 'PackageName',
@PackageName)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue,
Name, Value) VALUES
(@AuftragsNummer, 'DistributionCommand',
@DistCommands)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue,
Name, Value) VALUES
(@AuftragsNummer, 'SchedulerString', "")
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM
dbo.EmpTaskQueue WHERE Name =
@AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText
FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
END
END
END
-- Softwareparameter zur neuen Softwaregruppe hinzugefügt.
FETCH NEXT FROM mySoftware INTO @SoftwareID, @GroupID
END
CLOSE mySoftware
DEALLOCATE mySoftware
-- PC aus alter Konfigurationsgruppe löschen
SET @Nummer = 0
if (@Nummer < 6) --SPARPOTENIAL
BEGIN
print '------ PC in alter Gruppe löschen -------'
SET @AuftragsName = 'LoescheKG_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 2
SET @ActionCode = 0
SET @TargetObjectType = 3
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name, ActionType, ActionCode,
TargetObjectType, Status) VALUES (@SubScriberID, @AuftragsName, @ActionType,
@ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'GroupID', CONVERT(varchar(255), @TreeOldID))
SELECT @Nummer = Status FROM dbo.EmpTaskQueue WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
else
BEGIN
--PC in neuer Konfigurationsgruppe anlegen
print '------ PC in neue Gruppe einpflegen -------'
SET @AuftragsName = 'AnlPCKonf_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionType = 5
SET @ActionCode = 10
SET @TargetObjectType = 1
SELECT @DomainName = Domain FROM dbo.clients WHERE name = @PCName
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name, ActionType,
ActionCode, TargetObjectType, Status) VALUES (@SubScriberID,
@AuftragsName, @ActionType, @ActionCode, @TargetObjectType, 1)
SELECT @AuftragsNummer = ID FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'GroupID', @newGroupID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value) VALUES
(@AuftragsNummer, 'ClientName', @PCName)
INSERT INTO Empirum44.dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'Domain', @DomainName)
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
else
BEGIN
--Aktiviere PC
SET @isPXE = 0
print '----- Aktiviere PC -----'
SET @WOLZEIT = 0
SET @ActionType = 5
SET @AuftragsName = 'Activate_' + @PCName + '_' +
CONVERT(varchar, getUTCDate(), 113)
SET @ActionCode = 20
SET @TargetObjectType = 1
INSERT INTO dbo.EmpTaskQueue (ID_EmpExtSubscribers, Name,
ActionType, ActionCode, TargetObjectType, Status) VALUES
(@SubscriberID, @AuftragsName, @ActionType, @ActionCode,
@TargetObjectType, 1)
SELECT @AuftragsNummer = dbo.EmpTaskQueue.ID FROM
dbo.EmpTaskQueue WHERE dbo.EmpTaskQueue.Name =
@AuftragsName
SELECT @clientID = dbo.clients.client_ID FROM dbo.clients
WHERE dbo.clients.Name = @PCName
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'ClientID', @clientID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'ClientName', @PCName)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'Domain', @DomainName)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'GroupID', @newGroupID)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'PXE', @isPXE)
INSERT INTO dbo.EmpTaskParam (ID_EmpTaskQueue, Name, Value)
VALUES (@AuftragsNummer, 'WOL', @WOLZEIT)
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
WHILE (@Nummer < 5)
BEGIN
SELECT @Nummer = Status FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
END
if (@Nummer = 6)
BEGIN
SELECT @FehlerText = ErrorText
FROM dbo.EmpTaskQueue
WHERE Name = @AuftragsName
print @FehlerText
END
END
END
END
else
BEGIN
SELECT @FehlerText = 'Auftrag wurde abgebrochen!'
print @FehlerText
END
END
END
TSQL-Statement for the getGroupPath-Routine:
Function dbo.getGroupPath(@Name varchar(255), @ID uniqueidentifier, @Nummer INTEGER, @varPath varchar(1012)) RETURNS varchar(1012) AS
BEGIN
DECLARE @varNummer INTEGER
DECLARE @varID uniqueidentifier
DECLARE @varSoftware varchar(1012)
BEGIN
SET @varNummer = @Nummer +1
if(@Nummer = 0)
BEGIN
if (@Name = '')
BEGIN
SELECT @varSoftware = name FROM dbo.TreeDefinition WHERE id = @ID
SET @varID = @ID;
SET @varPath = @varSoftware
END
else
BEGIN
SELECT @varID = ID FROM dbo.TreeDefinition WHERE Name = @Name
SET @varPath = @Name
END
END
else
SET @varID = @ID;
SELECT @varSoftware = A.Name, @varID = A.ID FROM dbo.TreeDefinition A, dbo.TreeDefinition B
WHERE A.ID = B.PARENT AND B.ID = @varID;
BEGIN
if(@varSoftware <> 'IDS_COMPUTER_GROUP_ROOT')
BEGIN
SET @varPath = @varSoftware + '\' + @varPath
SET @Nummer = @Nummer +1
SELECT @varPath = dbo.getGroupPath(@varSoftware, @varID,
@Nummer, @varPath)
END
END
return @varPath
END
END
Viel Spaß!
Dr. Olaf Meuther
Who is online
Users browsing this forum: No registered users and 5 guests