我试图从PowerShell运行批处理命令

时间:2016-05-26 19:41:03

标签: powershell batch-file

我遇到了net.exe

的字符限制
net localgroup administrators "domainname\G-%COMPUTERNAME%-LocalAdmins" /add

我被告知你可以通过PowerShell运行,但我没有成功。以下是我的想法:

powershell -command "& {([adsi]'LDAP://./localgroup,administrators').Add('LDAP://domainname/G-%COMPUTERNAME%-LocalAdmins,Administrators');}"

非常感谢任何协助。

3 个答案:

答案 0 :(得分:1)

您可以从PowerShell运行外部命令(如for my $filename (@filenames) { my $content = path($filename)->slurp_utf8; say $content; } ),就像从CMD运行它们一样。但是,如果要使用(环境)变量,则必须使用PowerShell变量语法(分别为net.exe$var)。 PowerShell无法识别CMD /批处理变量语法($env:var)。

这应该有效:

%var%

答案 1 :(得分:1)

每个微软:

<块引用>

出于与 LAN Manager 2.0 向后兼容的原因,NET.EXE 命令不支持长度超过 20 个字符的名称。

是的,Windows 命令会将变量传递给 PowerShell。如果成员在同一个域中,则不需要包含它。使用 Add-LocalGroupMember cmdlet。

PowerShell Add-LocalGroupMember -Group Administrators -Member 'G-%COMPUTERNAME%-LocalAdmins'

答案 2 :(得分:0)

经过一天左右的研究,我找到了Jaap Brasser的微软论坛。他编写了一个脚本,我可以用我的参数调用它并开始工作......

powershell.exe -ExecutionPolicy Bypass -file&#34; \ server \ pub \ DomainAdmin \ SetADAccounts.ps1&#34; -Computer%COMPUTERNAME%-Trustee domainname \ G-%COMPUTERNAME%-LocalAdmins

感谢您的投入..