Preciso extrair client_TargetText
e AnotherTargetText_110953_140521
dos resultados que recebo ao executar o whoami /groups
comando:
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_TargetText
e remover o client_
para que se tornasse justo TargetText
e depois fazer isso $Param1
no script abaixo? ( client_
está sempre presente no texto que preciso pegar para $Param1)
Então, como eu faria para pegar AnotherTargetText_110953_140521
para que pudesse ser transformado $Param2
no script abaixo? (O texto desejado para $Param2
é sempre sufixado por 6digits_6digits
nesses 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 whoami
executados, 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 $Param1
e $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
Se isso estiver sendo executado com o PowerShell:
""
).$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.
Felizmente,
whoami
tem uma/FO CSV
opção que podemos usar para convertê-lo em um objeto PowerShell adequado usandoConvertFrom-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$Param2
como 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: