AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 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

如何将这些结果中的文本解析为单独脚本的参数?

  • 772

我需要从运行命令时得到的结果中提取client_TargetText和提取:AnotherTargetText_110953_140521whoami /groups

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>

我将如何去抓取client_TargetText和删除client_它,让它变得公正TargetText,然后$Param1在下面的脚本中制作它?(client_总是出现在我需要为 $Param1 抓取的文本中)

那么我将如何去抓取AnotherTargetText_110953_140521以便可以$Param2在下面的脚本中制作它?(在这些 AD 组中,所需的文本$Param2始终以 为后缀)6digits_6digits

我的目标是以某种方式将此文本发送到我用于在用户桌面上创建服务器快捷方式的脚本中。

运行时每个用户的结果会有所不同,whoami所以我认为唯一可以使用的通配符是client_and 6digits_6digits。任何帮助我找到这个答案的人都非常感谢,因为我正在尝试了解这将如何工作但无法弄清楚。

下面的脚本是成功解析这两条文本并将它们转换为$Param1and后的预期结果$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 个回答
  • 146 Views

1 个回答

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

    如果这是使用 PowerShell 运行的:

    1. 让我们使用正确的开始和结束引号 ( "")。
    2. 让我们也使用正确的环境变量:$env:USERPROFILE.

    我真的无法理解你想要完成的事情,所以我做了我认为你的意思。至于你的功能参数,我仍然迷路了。

    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
    

    幸运的是,whoami有一个/FO CSV选项,我们可以使用它来使用ConvertFrom-Csv. 在对象转换之后,我们可以使用一些正则表达式匹配来获得您在假设这正是名称的显示方式之后的内容。请注意 , 的双重赋值$Param1,$Param2因为它将结果分成这两个变量。此外,为了避免使用管道,我使用了.Where()\{} 运算符(是的,它被认为是运算符)来加快解析速度。

    我建议查看@Lee_Daily 提到的 cmdlet,以包括他提供的方法来获得您所追求的结果。

    编辑: 您可以尝试将过滤分成两个变量以进行显式过滤。虽然不是最好的解决方案,但它应该可以工作:

    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

相关问题

  • VMware Workstation USB 仲裁服务无法自动启动

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 资源管理器侧面板中的桌面外壳快捷方式

  • 为什么我不能将文件从 Android 发送到 Windows 10?

  • 在多个文件上打开方式?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve