AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1667323
Accepted
Mastaxx
Mastaxx
Asked: 2021-08-04 11:29:15 +0800 CST2021-08-04 11:29:15 +0800 CST 2021-08-04 11:29:15 +0800 CST

Como posso analisar o texto desses resultados em parâmetros para um script separado?

  • 772

Preciso extrair client_TargetTexte AnotherTargetText_110953_140521dos resultados que recebo ao executar o whoami /groupscomando:

Resultados do Powershell:

Group Name                                 Type             SID                                           Attributes
========================================== ================ ============================================= ==================================================
Everyone                                   Well-known group S-1-1-0                                       Mandatory group, Enabled by default, Enabled group
BUILTIN\Users                              Alias            S-1-5-32-545                                  Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\INTERACTIVE                   Well-known group S-1-5-4                                       Mandatory group, Enabled by default, Enabled group
CONSOLE LOGON                              Well-known group S-1-2-1                                       Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users           Well-known group S-1-5-11                                      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization             Well-known group S-1-5-15                                      Mandatory group, Enabled by default, Enabled group
LOCAL                                      Well-known group S-1-2-0                                       Mandatory group, Enabled by default, Enabled group
MYDOMAIN\GGM-FIRE-PC                       Group            S-1-5-21-457414007-2867176591-488352320-6061  Mandatory group, Enabled by default, Enabled group
MYDOMAIN\myles_gp                          Group            S-1-5-21-457414007-2867176591-488352320-12531 Mandatory group, Enabled by default, Enabled group
MYDOMAIN\GGM-RDP                           Group            S-1-5-21-457414007-2867176591-488352320-13873 Mandatory group, Enabled by default, Enabled group
MYDOMAIN\client_TargetText                 Group            S-1-5-21-457414007-2867176591-488352320-7924  Mandatory group, Enabled by default, Enabled group
MYDOMAIN\AnotherTargetText_110953_140521   Group            S-1-5-21-457414007-2867176591-488352320-13947 Mandatory group, Enabled by default, Enabled group
Authentication authority asserted identity Well-known group S-1-18-1                                      Mandatory group, Enabled by default, Enabled group
Mandatory Label\Medium Mandatory Level     Label            S-1-16-8192
PS C:\Users\test.dev>

Como eu faria para pegar client_TargetTexte remover o client_para que se tornasse justo TargetTexte depois fazer isso $Param1no script abaixo? ( client_está sempre presente no texto que preciso pegar para $Param1)

Então, como eu faria para pegar AnotherTargetText_110953_140521para que pudesse ser transformado $Param2no script abaixo? (O texto desejado para $Param2é sempre sufixado por 6digits_6digitsnesses grupos AD)

Meu objetivo é de alguma forma enviar esse texto para um script que uso para criar atalhos de servidor nas áreas de trabalho dos usuários.

Os resultados serão diferentes para cada usuário quando whoamiexecutados, então acho que os únicos curingas que podem ser usados ​​são client_e 6digits_6digits. Qualquer ajuda para encontrar essa resposta é muito apreciada, pois estou tentando aprender como isso funcionaria, mas não consigo descobrir.

O script abaixo é o resultado desejado após analisar com sucesso esses dois pedaços de texto e transformá-los em $Param1e $Param2:

function set-shortcut {
param ( [string]$SourceLnk, [string]$DestinationPath )
    $WshShell = New-Object -comObject WScript.Shell
    $Shortcut = $WshShell.CreateShortcut($SourceLnk)
    $Shortcut.TargetPath = $DestinationPath
    $Shortcut.Save()
    }

    try{

$Param1 = TargetText
$Param2 = AnotherTargetText_110953_140521
$SourcePath = \\server\data\designs\$Param1\$Param2\data_store"

set-shortcut "%USERPROFILE%\Desktop\data_store.lnk" "$SourcePath"

     "This worked"
     
pause
}

catch
   {
    
    "This didn't work"
}
pause
windows-10 powershell
  • 1 1 respostas
  • 146 Views

1 respostas

  • Voted
  1. Best Answer
    Abraham Zinala
    2021-08-04T19:04:16+08:002021-08-04T19:04:16+08:00

    Se isso estiver sendo executado com o PowerShell:

    1. Vamos usar as aspas apropriadas de abertura e fechamento ( "").
    2. Vamos também usar as variáveis ​​de ambiente apropriadas: $env:USERPROFILE.

    Eu realmente não poderia fazer muito sentido no que você estava tentando realizar, então eu fiz o que eu acho que você quis dizer. Quanto aos seus parâmetros para sua função, ainda estou perdido.

    function Set-ShortCut {
        Param ( 
            [string]$SourceLnk, 
            [string]$DestinationPath 
        )
            
            $WshShell = New-Object -comObject WScript.Shell
            $Shortcut = $WshShell.CreateShortcut($SourceLnk)
            $Shortcut.TargetPath = $DestinationPath
            $Shortcut.Save()
    
    }
    
    
    $Groups = Whoami /Groups /FO CSV | ConvertFrom-Csv
    
    $Param1, $Param2 = $Groups.'Group Name'.Where{
        
            $_ -match 'client_' -or `
            $_ -match '(_\d{6}){2}'
    
        } -replace 'client_|MYDOMAIN\\'
    
    
    
    $SourcePath = "\\server\data\designs\$Param1\$Param2\data_store"
    
    Set-ShortCut -SourceLnk "$env:USERPROFILE\Desktop\data_store.lnk" -DestinationPath $SourcePath
    

    Felizmente, whoamitem uma /FO CSVopção que podemos usar para convertê-lo em um objeto PowerShell adequado usando ConvertFrom-Csv. Após a conversão do objeto, podemos usar alguma correspondência de Regex para obter o que você deseja, assumindo que é exatamente assim que os nomes são exibidos. Observe a dupla atribuição de $Param1, e $Param2como ela divide os resultados nessas duas variáveis. Além disso, ao tentar evitar o pipeline , usei o .Where()\{} operador ( sim, é considerado um operador ) para uma análise mais rápida.

    Eu sugeriria examinar o cmdlet mencionado por @Lee_Daily, para incluir o método que ele fornece para obter os resultados que você procura.

    EDIT: Você pode tentar separar a filtragem em duas variáveis ​​para filtragem explícita. Embora não seja a melhor solução, deve funcionar:

    function Set-ShortCut {
        Param ( 
            [string]$SourceLnk, 
            [string]$DestinationPath 
        )
            
            $WshShell = New-Object -comObject WScript.Shell
            $Shortcut = $WshShell.CreateShortcut($SourceLnk)
            $Shortcut.TargetPath = $DestinationPath
            $Shortcut.Save()
    
    }
    
    $Groups = WhoAmI /Groups /FO CSV | ConvertFrom-Csv
    
    $Param1 = $Groups.'Group Name'.Where{ $_ -match 'client_' } -replace 'client_|MYDOMAIN\\'
    $Param2 = $Groups.'Group Name'.Where{ $_ -match '(_\d{6}){2}' } -replace 'MYDOMAIN\\'
    
    $SourcePath = "\\server\data\designs\$Param1\$Param2\data_store"
    
    Set-ShortCut -SourceLnk "$env:USERPROFILE\Desktop\data_store.lnk" -DestinationPath $SourcePath
    
    • 2

relate perguntas

  • O serviço de arbitragem USB da estação de trabalho VMware não inicia automaticamente

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • atalho do shell da área de trabalho no painel lateral do explorer

  • Por que não consigo enviar arquivos do Android para o Windows 10?

  • Abrir com em vários arquivos?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve