Listagem de unidades mapeadas e nome de usuário Powershell Script

2

Já faz algum tempo desde que eu toquei no PowerShell, então me esforcei para conseguir esse trabalho como eu esperava.

$computerlist = Get-Content H:\MappedDrive\ListOfMachines.txt

ForEach ($computer in $computerlist)
{

   $Result1 Get-WmiObject Win32_MappedLogicalDisk -computerName $computer | Select Name,ProviderName 
   $Result2 get-wmiobject win32_computersystem -computer $computer | select username 

}

$Result += $Result1, $Result2 | Out-File H:\MappedDrive\$computer.txt

Então, espero tê-lo puxando tanto a letra da unidade, localização e nome de usuário, em seguida, a saída do nome do computador como um arquivo de texto. Eu li muitos outros fóruns, mas simplesmente não consigo obter os Get-WmiObjects para trabalharem juntos.

Desculpas se isso está no fórum errado não tinha certeza qual seria o melhor.

obrigado

CharlesH
fonte

Respostas:

4

Há algumas coisas erradas aqui.

  1. $Result1 GetWmiObject Eu suponho que deveria haver um = Aqui?
  2. $Result | Out-File não está jogando bem com a mistura de objetos na matriz. Pode querer For-EachObject em vez disso, usando Add-Content.
  3. Você está adicionando seus resultados fora do loop, o que significa que você só vai conseguir o seu último $computer no $computerlist

Pode querer fazer algo como o seguinte:

$computerlist = Get-Content H:\MappedDrive\ListOfMachines.txt

ForEach ($computer in $computerlist)
{

   $Result1 = Get-WmiObject Win32_MappedLogicalDisk -computerName $computer | Select Name,ProviderName 
   $Result2 = Get-wmiobject Win32_computersystem -computer $computer | select username 
   $Result += $Result1, $Result2 | %{Add-Content "H:\MappedDrive\$computer.txt" $_}
}
Tanner Faulkner
fonte
Perfeito obrigado Tanner, vergonha todas as minhas tentativas remotas estão sendo bloqueadas pelo Firewall agora GRR .. Script funcionando perfeitamente embora.
CharlesH
Tenho certeza de que não funcionará remotamente.
NetMage
@NetMage Claro que sim. Só precisa configurar o WMI remoto: msdn.microsoft.com/pt-br/library/ee309377(v=vs.85).aspx
Tanner Faulkner
-1

Para contornar scripts remotos do powershell, existem 2 maneiras que encontrei.

  1. Se você criar um arquivo em lotes com os seguintes comandos, ele será executado em um computador remoto.

powershell.exe -executionpolicy bypass -file "CAMINHO DO ARQUIVO AQUI"

  1. Execute seu script no Powershell ISE. Selecione todo o seu script e clique no botão de seleção de execução.
Tony
fonte
Sua resposta não responde à pergunta do autor, mas é uma resposta sobre como contornar uma política de grupo que impede a execução de scripts do Powershell (ou seja, Restricted de Get-executionpolicy). Isso também provavelmente não funcionará no computador conectado a um domínio ativo.
Ramhound