我正在创建一个脚本,该脚本将进入我们托管的所有服务器,并获取特定组的所有成员和域名,然后将其导出到文件中。我将用户和域名保存为两个数组AA(用户数组)和DA(域数组)AA代表användararray,而“användare”是瑞典语的用户,因此对我来说很有意义。
我注意到导出步骤不起作用,没有导出用户或域名,所以我尝试在函数中打印它们。但它没有打印任何东西,所以我试图在不同的位置打印它(没有工作)。经过一些实验,我得出结论,数组实际包含任何信息的唯一地方是在foreach循环中,我保存了我找到的用户??!
这是代码
unction GetData([int]$p) {
Write-Host("B")
for ($row = 1; $row -le $UsernamesArray.Length; $row++)
{
if($CloudArray[$row] -eq 1)
{
.
$secstr = New-Object -TypeName System.Security.SecureString
$PasswordsArray[$row].ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $UsernamesArray[$row], $secstr
$output = Invoke-Command -computername $AddressArray[$row] -credential $cred -ScriptBlock {
Import-Module Activedirectory
foreach ($Anvandare in (Get-ADGroupMember fjärrskrivbordsanvändare))
{
$AA = @($Anvandare.Name)
$DA = gc env:UserDomain
#$DA + ";" + $Anvandare.Name
$DA + ";" + $AA
}
}
$output
}
}
$DA
$AA
}
function Export {
Write-Host("C")
$filsökväg = "C:\Users\322sien\Desktop\Coolkids.csv"
$ColForetag = "Företag"
$ColAnvandare = "Användare"
$Emptyline = "`n"
$delimiter = ";"
for ($p = 1; $p -le $DomainArray.Length; $p++) {
$ColForetag + $delimiter + $ColAnvandare | Out-File $filsökväg
$DA + $delimiter + $AA | Out-File $filsökväg -Append
}
}
ReadInfo
GetData
Export
任何人都可以帮我吗?我整天坐下来都无法找到解决办法。
答案 0 :(得分:1)
您的变量$ DA和$ AA绑定到GetData函数,因此它们只存在于那里。您可以通过更改范围在脚本中使它们可用。
改变这个:
$AA = @($Anvandare.Name)
$DA = gc env:UserDomain
对此:
$script:AA = @($Anvandare.Name)
$script:DA = gc env:UserDomain
因此,它们现在可用于脚本中的其他功能。
我也找到了改进脚本的方法,希望你能看到逻辑:
function GetData([int]$p) {
Write-Host("B")
for ($row = 1; $row -le $UsernamesArray.Length; $row++)
{
if($CloudArray[$row] -eq 1)
{
.
$secstr = New-Object -TypeName System.Security.SecureString
$PasswordsArray[$row].ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $UsernamesArray[$row], $secstr
[array]$output = Invoke-Command -computername $AddressArray[$row] -credential $cred -ScriptBlock {
Import-Module Activedirectory
$array = @()
foreach ($Anvandare in (Get-ADGroupMember fjärrskrivbordsanvändare))
{
$object = New-Object PSObject
$object | Add-Member -MemberType NoteProperty -Name AA -Value @($Anvandare.Name)
$object | Add-Member -MemberType NoteProperty -Name DA -Value (gc env:UserDomain)
$object | Add-Member -MemberType NoteProperty -Name Something -Value $DA + ";" + $AA
$array += $object
}
Write-Output $array
}
Write-Output $output
}
}
}
您的功能现在将输出一些数据。