gpt4 book ai didi

powershell - 如何创建哈希表以写入输出以进行调试?

转载 作者:行者123 更新时间:2023-12-03 00:31:36 27 4
gpt4 key购买 nike

使用powershell,我想打印散列哈希表的结果。这是我想出的一个示例(但是Write-Output无法正常工作):

$SomePath = "C:\test\path"

$params = @{
p = "$SomePath"
r = "Foo"
a = "Bar"
}

$destinationDir = ''

if (![string]::IsNullOrEmpty($destinationDir)) {
$params['b'] = $destinationDir
}

Write-Output "Params: @params"
Write-Output的结果从字面上看是:

Params: @params


有没有一种方法可以打印此命令的扩展以进行调试?我还想最终存储扩展的调用,以便以后从变量中调用,就像这样(我想它会起作用):
$cmd = "MyProgram.exe @params"
& "$cmd"
但是,如果这是一堆全新的蠕虫病毒,我很高兴在最初的示例中仅使 Write-Output运行即可。
这是我的Powershell版本:
PS C:\> $PSVersionTable.PSVersion

Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 0 3

最佳答案

如果您想观察喷溅对当前shell中的Win32 PE的影响,我建议使用Add-Type编译一个简单的调试实用程序:

$sourceCode = @'
using System;
using System.Management;
using System.Diagnostics;
public class Program
{
public static void Main(string[] args)
{
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + Process.GetCurrentProcess().Id))
using (ManagementObjectCollection procs = searcher.Get())
{
foreach (ManagementBaseObject process in procs)
{
Console.WriteLine(process["CommandLine"].ToString());
}
}
}
}
'@

Add-Type -TypeDefinition $sourceCode -OutputType ConsoleApplication -OutputAssembly ~\printCmdline.exe
生成的可执行文件将打印其自身进程的命令行参数-正是我们需要查看的内容。

现在我们有了一个可执行文件进行测试,让我们看看会发生什么:
$SomePath = "C:\test\path"

$params = @{
p = "$SomePath"
r = "Foo"
a = "Bar"
}

~\printCmdline.exe @params
哪个应该打印如下:
"C:\Users\void.pointer\printCmdline.exe" -r:Foo -p:C:\test\path -a:Bar

关于powershell - 如何创建哈希表以写入输出以进行调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64596684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com