Powershell从文本文件中的行中获取多个参数,并确定要为另一个脚本提供多少个参数
处理一个PS脚本,该脚本接受域拥有的所有信任,并生成一个包含这些域(docs.example.com)的文本文件,然后按时段分割 alladtrustsformated.txt 此文件包含Powershell从文本文件中的行中获取多个参数,并确定要为另一个脚本提供多少个参数,powershell,command-line-arguments,Powershell,Command Line Arguments,处理一个PS脚本,该脚本接受域拥有的所有信任,并生成一个包含这些域(docs.example.com)的文本文件,然后按时段分割 alladtrustsformated.txt 此文件包含 ` aaa.domain.org bbb.subdomain.differentdomain.org ccc.some.other.domain.org ddd.domain BareWinDomain` 主脚本需要有1-7个输入参数 (带.as字段分隔符的域长度) 这
` aaa.domain.org
bbb.subdomain.differentdomain.org
ccc.some.other.domain.org
ddd.domain
BareWinDomain`
主脚本需要有1-7个输入参数
(带.as字段分隔符的域长度)
这很好,现在我需要做的就是找出如何确定字段,以提供另一个主脚本,该脚本将对域运行AD调用(Get ADComputer),以输出需要监视的服务器。获取当前所有服务器的主脚本必须手动运行
(e.g. MasterScript.ps1 -DOMAIN aaa -DC1 aaa -DC2 aaa -DC3 bbb -DC4 org )
我希望获得AD信任,然后遍历域文件(在中)并查找所有以服务器作为属性的系统。我希望主脚本读入主域列表,并动态计算出有多少个参数(即FQDN中的域部分)并使用FQDN的正确数字数据格式化主脚本(请参见上文)
这必须比我现在的方法更简单。我想避免运行一个函数来计算域参数的数量,并将它们放入要读取的文件中(例如1Arg.txt 2Arg.txt 3Arg.txt)
一如往常,我要提前表示感谢
//\如果不想修改主脚本,应使用参数创建一个变量,如下所示:
$params = @{}
gc AllADTrustsFormatted.txt |% {
$parts = $_ -split "\."
$params.DOMAIN = $parts[0]
1..($parts.Count - 1)|% {
$params."DC$_" = $parts[$_]
}
}
& MasterScript.ps1 @params
很抱歉,如果这不是您想要的,那么很难弄清楚脚本到底应该传递给主脚本什么…如果您不想修改主脚本,您应该创建一个带有参数的变量,如下所示:
$params = @{}
gc AllADTrustsFormatted.txt |% {
$parts = $_ -split "\."
$params.DOMAIN = $parts[0]
1..($parts.Count - 1)|% {
$params."DC$_" = $parts[$_]
}
}
& MasterScript.ps1 @params
很抱歉,如果这不是您想要的,那么很难确定脚本应该传递给主脚本的内容…这看起来正是需要的!谢谢Hellon,你太棒了!现在尝试。我刚刚犯了一个错误,代码“$params=@{}”应该是第一个命令这看起来正是需要的!谢谢Hellon,你太棒了!现在尝试。我刚刚犯了一个错误,这个代码“$params=@{}”应该是第一个命令