diff --git a/pkgtool.pm b/pkgtool.pm index 80f9e12..c916e54 100644 --- a/pkgtool.pm +++ b/pkgtool.pm @@ -3330,15 +3330,20 @@ sub handle_directory ($$$$$$) return 1; } -sub handle_group ($$$) +sub handle_group ($$$$) { - my ($pkg, $counters, $update) = @_; + my ($pkg, $vars, $counters, $update) = @_; my $name = $$pkg{name}; my $hostname = $ENV{'COMPUTERNAME'}; my $groupname = $$pkg{'group'}; my $members = $$pkg{'members'}; $members = [] unless defined $members; + if (defined $vars) { + $groupname = substitute_variables($vars, $groupname, 0, undef, 'global') + if $groupname =~ /%[^%]*%/o; + $members = [map { $_ =~ /%[^%]*%/o ? substitute_variables($vars, $_, 0, undef, 'global') : $_ } @$members]; + } my $sourcefile = $ENV{systemroot}.'\\System32\\wbem\\wmic.exe'; my $paramlist = ['path', 'win32_groupuser', 'where', '(groupcomponent="win32_group.name=\''.$groupname.'\',domain=\''.$hostname.'\'")']; @@ -3402,9 +3407,9 @@ sub handle_group ($$$) return 1; } -sub handle_user ($$$) +sub handle_user ($$$$) { - my ($pkg, $counters, $update) = @_; + my ($pkg, $vars, $counters, $update) = @_; my $name = $$pkg{name}; my $username = $$pkg{'user'}; @@ -3419,6 +3424,12 @@ sub handle_user ($$$) $fullname = '' unless defined $fullname; my $pwexpires = $$pkg{'pwexpires'}; $pwexpires = defined $pwexpires && $pwexpires; + if (defined $vars) { + $username = substitute_variables($vars, $username, 0, undef, 'global') + if $username =~ /%[^%]*%/o; + $fullname = substitute_variables($vars, $fullname, 0, undef, 'global') + if $fullname =~ /%[^%]*%/o; + } my $sourcefile = $ENV{systemroot}.'\\System32\\wbem\\wmic.exe'; my $paramlist = ['useraccount', 'where', '"name=\''.$username.'\'"']; @@ -3559,10 +3570,10 @@ sub handle_pkg ($$$$$$) } if (defined $$pkg{'user'}) { - return handle_user($pkg, $counters, $update); + return handle_user($pkg, $vars, $counters, $update); } if (defined $$pkg{'group'}) { - return handle_group($pkg, $counters, $update); + return handle_group($pkg, $vars, $counters, $update); } if (defined $$pkg{'directory'}) { return handle_directory($config, $pkg, $vars, $base_directory, $counters, $update);