在Powershell中为每个数组值添加字符串前缀

xmd2e60i  于 2023-01-20  发布在  Shell
关注(0)|答案(4)|浏览(155)

我有一个用户列表,需要向这些用户授予对一组Windows服务的访问权限。它适用于定义的用户集,但我希望使脚本更具动态性,并动态传递用户和组名称。我可以执行foreach,但我希望能够在每个用户的开头添加前缀域名。示例:

$usrs = "abc", "def", "ghi", "jkl"

当我执行foreach ($usr in $usrs)时,它需要用"AU\abc"作为"abc"的前缀,依此类推。

m3eecexj

m3eecexj1#

你可以试试这个:

foreach($usr in $usrs) {
    $user = "AU\$usr"
    #Continue script...
}

或者,如果您需要更换现有阵列:

$usrs = $usrs | Foreach-Object { "AU\$_" }
#or
$usrs = foreach($usr in $usrs) { "AU\$usr" }
gwbalxhn

gwbalxhn2#

一种方法是:

$usrs = "abc", "def", "ghi", "jkl" | % { "AU\"+$_ }
e4eetjau

e4eetjau3#

这应该有帮助。

$usrs = "abc", "def", "ghi", "jkl"
foreach ($user in $usrs) {
    "AU\${user}"
}

此外,从PowerShell 4.0开始,您也可以执行此操作。

$usrs = "abc", "def", "ghi", "jkl"
$usrs.ForEach({"AU\$_"})
3htmauhk

3htmauhk4#

如果你在嵌套循环中这样做,内部循环不能从外部循环访问任何变量,下面是一个在两种情况下都有效的替代方法:

$usrs = @("abc", "def", "ghi") 
$prefixValue = 'AU\'
$usrs | ForEach-Object -Member Insert -ArgumentList @(0, $prefixValue)

相关问题