新的cmdlet、操作符和变量,再加上诸如脚本调试以及后台任务这样的新功能,PowerShell 2.0将帮助你开启PowerShell脚本编程的新世界。 ...“@”操作符可以传递一组参数;“-split”是把一个字符串拆分到一个数组中;而“-join”则用于连接多个字符串、增加分隔器。...“$commandLineParameters”变量可以访问命令行的参数。“$PSVersionTable”可以报告当前的PowerShell版本。...你使用“Try”代码段来安全地执行一个或多个声明。如果出现错误,那么就执行“Catch”代码段。“Try-Catch”部分的代码完成之后,你还可以选择性地执行“Finally”代码段。 ...新的PowerShell宿主API致力于将PowerShell的功能拓展到其它产品中,通过它可以方便地在应用程序中嵌入PowerShell。
docker run执行的命令不会覆盖 ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给 ENTRYPOINT。...docker run运行容器时指定的参数都会被传递给 ENTRYPOINT ,且会覆盖 CMD 命令指定的参数。...使用LABEL指定元数据时,一条LABEL指定可以指定一或多条元数据,指定多条元数据时不同元数据之间通过空格分隔。 推荐将所有的元数据通过一条LABEL指令指定,以免生成过多的中间镜像。...ARG用于指定传递给构建运行时的变量: ARG [=] 如,通过ARG指定两个变量: ARG site ARG build_user=artisan 以上我们指定了...在使用 docker build 构建镜像时,可以通过 --build-arg = 参数来指定或重设置这些变量的值。
这一部分着重于介绍Powershell的程序知识,让我们能够编写功能强大的Powershell脚本,执行比较复杂的任务。 变量 变量使用$变量名创建和引用。...比方说,我们将Get-Location命令的结果通过管道传递给Get-Member命令,就会显示下面的输出。如果不了解.NET的话,可能感觉比较陌生。...特殊运算符 &运算符将它后面的命令设置为后台运行,当运行的命令需要阻塞当前终端的时候很有用。 .\\运算符用于执行一个脚本或命令。...假如在脚本中有一个函数可能返回0、1或多个值,就可以使用这个操作符,将一系列值合并为一个数组,方便后续处理。 ,逗号运算符如果放置在单个值前面,就会创建一个包含这个值的单元素数组。...也支持位置参数,它会把所有参数包装到$args数组中,所以我们可以通过这个变量访问所有位置的参数。
,还可以同时给多个变量赋相同的值,交换变量的值PS只需要两步 变量可以自动存储任何Powershell能够识别的类型信息 采用`或者’’包含变量的都不能进行解析调用变量,只会原样进行输出; 变量会在PS...在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。 $Args : 包含由未声明参数和/或传递给函数、脚本或脚本块的参数值组成的数组。...在通过 PSConsoleFile 参数启动 Windows PowerShell 或使用 Export-Console cmdlet 将管理单元名称导出到控制台文件 时,将填充此变量。...只有在声明参数的作用域(如脚本或函数)中, 此变量才有值。可以使用此变量显示或更改参数的当前值,也可以将参数值传递给 其他脚本或函数。...按位“异或” 5 -bxor 3 # 6 -shl 将位向左移动 3 -shl 2 # 12 -shr 将位向右移动 16 -shr 2 # 4 4) 布尔转换: 包括位操作符在内的多个操作符返回数字类型的值
tag 或 digest 是可选的,如果不使用这两个值时,会使用 latest 版本的基础镜像 2 RUN 执行命令 在镜像的构建过程中执行特定的命令,并生成一个中间镜像。...docker run执行的命令不会覆盖 ENTRYPOINT,而 docker run命令中指定的任何参数,都会被当做参数再次传递给 ENTRYPOINT。...docker run运行容器时指定的参数都会被传递给 ENTRYPOINT ,且会覆盖 CMD 命令指定的参数。如,执行 docker run -d时,-d 参数将被传递给入口点。...使用LABEL指定元数据时,一条LABEL指定可以指定一或多条元数据,指定多条元数据时不同元数据之间通过空格分隔。推荐将所有的元数据通过一条LABEL指令指定,以免生成过多的中间镜像。...在使用 docker build 构建镜像时,可以通过 --build-arg = 参数来指定或重设置这些变量的值。
因此我们可以通过别名覆盖任意powershell命令,因为别名的优先级最高。 函数:如果没有找到别名会继续寻找函数,函数类似别名,只不过它包含了更多的powershell命令。...,还可以同时给多个变量赋相同的值,交换变量的值PS只需要两步 变量可以自动存储任何Powershell能够识别的类型信息 采用`或者’’包含变量的都不能进行解析调用变量,只会原样进行输出; 变量会在PS...在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。 $Args : 包含由未声明参数和/或传递给函数、脚本或脚本块的参数值组成的数组。...在通过 PSConsoleFile 参数启动 Windows PowerShell 或使用 Export-Console cmdlet 将管理单元名称导出到控制台文件 时,将填充此变量。...只有在声明参数的作用域(如脚本或函数)中, 此变量才有值。可以使用此变量显示或更改参数的当前值,也可以将参数值传递给 其他脚本或函数。
脚本或命令会通过命令行进程执行。...命令行为王 很多PowerShell攻击可以通过监控传递给PowerShell进程的命令行参数来进行检测。...进程创建时传递了哪些命令行参数; 3. 父进程信息; 接下来,我将会用一个Splunk样本来解释如何利用警报信息来检测可疑的PowerShell活动。...Process_Command_Line中包含了传递给新创建进程(例如PowerShell)的命令行参数信息,我们可以基于一些常见参数(例如 –e, -Encod, -windowstyle , Bypass...而此时,我们就需要记录事件ID 4688,然后过滤并记录下任何关于PowerShell进程创建的活动以及传递给PowerShell的命令行参数,并以此来检测可疑的PowerShell攻击活动。
该命令使用 InputObject 参数指定输入位于 $a 变量中。它使用 Encoding 参数将输出转换为 ASCII 格式。它使用 Width 参数将文件中的每一行限制为 50 个字符。...它使用 InputObject 参数将 $h 变量的值传递给 Out-Printer。 4.哪一个Cmdlet命令可以操作进程(process)?...Start-Process Cmdlet Microsoft.PowerShell.M... 启动本地计算机上的一个或多个进程。...Stop-Process Cmdlet Microsoft.PowerShell.M... 停止一个或多个正在运行的进程。...在省略参数名时,这些参数的值必须以指定 的顺序出现在命令中。在此示例中,-Name 的值(“list”)必须为第一个参数,-Value 的值 (“get-location”)必须为第二个参数。
1、New-Item 创建新项命令cmdlet New-Item 将创建新项并设置其值。 可创建的项类型取决于项的位置。 例如,在文件系统 New-Item 中创建文件和文件夹。...表示当前操作目录-Value 指定文件内容常用参数介绍 ● -Name:指定新项的名称。...可以指定新项的名称或者指定新项的路径 ● -Path:指定新项的位置的路,如果省略的话表示当前目录,支持多个字符串通过逗号分割 ● -ItemType:指定新项目的指定提供者的类型(File 文件,SymbolLink...还可以通过管道将值传递给 New-Item ● -Confirm:用于创建操作运行cmdlet之前是否需要确认 ● -Force:针对文件夹,不会覆盖,只会返回之前创建的文件夹,针对文件或者注册表会覆盖文件内容...2、Remove-Item 删除项命令Remove-Item cmdlet 删除一个或多个项。它支持删除许多不同类型的项,包括文件、文件夹、注册表项、变量、别名和函数。
PTH(Pass the Hash 哈希传递)来进行横向渗透 2、单机密码抓取 可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出 本地用户名、散列值和其他安全验证信息都保存在...要想在Windows操作系统中抓取散列值或明文密码,必须将权限提升至System (1)抓取 导出SAM文件和system文件,然后通过mimikatz或者Cain来从文件读取hash reg save...: 通过ipc$连接远程计算机 执行命令 1、通过本地DCOM执行命令 获取DCOM程序列表: // Get-CimInstance在PowerShell 3.0上才有,即server2012及以上 Get-CimInstance...、Exchange邮件服务器安全防范 电子邮件中可能包含大量的源码、企业内部通讯录、明文密码、敏感业务登陆地址及可以从外网访问内网的V**账号密码等信息 Exchange支持PowerShell对其进行本地或远程操作...(在安装Exchange时,SPN就被注册在AD中了) Exchange数据库的后缀为“.edb”,存储在Exchange服务器上,使用PowerShell可以查看相应信息 Exchange邮件的文件后缀为
在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。 $Args 包含由未声明参数和/或传递给函数、脚本或脚本块的参数值组成的数组。...$Input 一个枚举数,它包含传递给函数的输入。$Input 变量区分大小写,只能用于函数和脚本块。(脚 本块本质上是未命名的函数。)...将标量输入提交给 -match 或 -notmatch 运算符时,如果检测到匹配,则会返回一个布尔值, 并使用由所有匹配字符串值组成的哈希表填充 $Matches 自动变量。...对于查找正在运行的脚本的名称,这非常有用。 $NULL 包含 NULL 或空值。可以在命令和脚本中使用此变量表示 NULL,而不是使用字符串”NULL”。...Tee-Object: 将命令输出保存在文件或变量中,并将其显示在控制台中。 Where-Object: 创建控制哪些对象沿着命令管道传递的筛选器。
在我们的迷你系列“Variables in Shells”中,了解如何在PowerShell中处理局部变量。...在PowerShell中,可以通过定义变量名称,然后使用Set-Variable命令设置其值来创建变量。...由于$ HOME嵌入在FOO中,因此该变量在调用时会扩展。 通过这种方式使用默认变量可以帮助你编写可跨平台运行的可移植脚本。 变量通常用于将信息从一个系统传递到另一个系统。...在这个简单的示例中,你的变量不是很有用,但是它仍然可以传达信息。 例如,由于FOO变量的内容是文件路径,因此可以将FOO用作指向其值引用的目录的快捷方式。...在PowerShell中,变量具有多种类型,包括字符串,整数和数组。 选择创建一个实质上具有多个值的变量时,必须确定是否需要用字符分隔的字符串或数组。
描述: 该cmdlet将计算机配置为接收通过使用WS-Management技术发送的PowerShell远程命令。...# 示例5:具有禁用的会话端点配置的环回连接 Disable-PSRemoting -Force # 第一次会话创建尝试: 凭据通过Credential参数显式传递给命令, 这种类型的连接通过网络堆栈...DcomAuthentication 参数 : 将PacketIntegrity指定为连接的身份验证级别。 AsJob 参数 : 将命令作为后台作业运行。 Wait 参数 : 等待重启完成。...Wait-Process 命令 - 使在本地计算机或远程计算机上运行的进程等待 Debug-Process 命令 - 调试本地计算机上运行的一个或多个进程。...描述: Debug Process cmdlet将调试器附加到本地计算机上一个或多个正在运行的进程。可以通过进程名称或进程ID(PID)指定进程,也可以将进程对象通过管道传送到此cmdlet。
每个消息都会被投入到一个或多个队列。...分割字符串 *:匹配一个单词 #:匹配0个或多个单词 图2-3 headers 不依赖于路由键的匹配规则路由消息,根据发送的消息内容headers属性进行完全匹配(键值对形式)。...公共参数说明 队列参数 channel.QueueDeclare方法中arguments参数,队列一旦声明,参数将无法更改,添加,删除 参数名称 描述 Features x-message-ttl 队列中的消息的生存周期...是单线程的,但是性能好也有很多原子性的命令,比如setnx命令,在接收到消息后将消息ID作为key去执行setnx命令,如果执行成功则表示没有执行过这条消息,可以进行消费(setnx命令特点:当且仅当key...不存在,将key值设为value值;若key已存在该命令不做任何操作) 使用全局ID区分消息,解决幂等性 生产者在请求头设置messageId,可以用随机ID或业务逻辑唯一ID 死信队列 消息被拒(basicreject
Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联。如果在整个林或域中的计算机上安装多个服务实例,则每个实例都必须具有自己的 SPN。...下面通过一个例子来说明SPN的作用: Exchange邮箱服务在安装的过程中,就会在活动目录中注册一个Exchange的SPN。...将SPN注册在域账号下 运行如下命令使用-S参数或-U -S参数将SPN注册在域用户hack下: setspn -S SQLServer/win7.xie.com:1433/MSSQL hack 或...将SPN注册在机器账号下 运行如下命令使用-S参数或-C -S参数将SPN注册在机器账号win7下: setspn -S SQLServer/win7.xie.com:1433/MSSQL win7...如下使用不同的工具探测域内的SPN: setspn 可以通过Windows系统自带的setspn执行如下命令查询域内的SPN。
然后我们又声明了一个变量 members. 将首个元素赋值为变量 person。 当设置两个对象彼此相等时,它们会通过 引用 进行交互。...但是通过 var, const 或 let 关键字声明的变量无法用 delete 操作符来删除。 name变量由 const关键字声明,所以删除不成功:返回 false....替代者(replacer)可以是个函数或数组,用以控制哪些值如何被转换为字符串。 如果替代者(replacer)是个 数组 ,那么就只有包含在数组中的属性将会被转化为字符串。...如果没有给函数传参,或者传的参值为 "undefined" ,那么参数的值将是默认值。...传递给 Symbol的参数只是给 Symbol的一个描述。Symbol的值不依赖于传递的参数。
在熟悉DOS命令的群体中,使用PowerShell可以完美替代CMD命令行工具,并且功能更强大,而很多命令也可以复用,无需重新学习,如dir/cd/config等经典的命令。...因为PowerShell.exe的所在文件夹已经有环境变量了,所以直接给出程序名就可以。当然全路径也是可以的。...添加参数的位置加上PowerShell脚本的路径即可,这里前面加了个运行策略参数,Bypass是什么警告都不通知,比较顺畅运行,也可以不加。...完整的参数是:-ExecutionPolicy Bypass E:\test.ps1 使用Sqlserver代理作业去运行 这种方式也是笔者在项目实际中所使用的,代理的方式,更好用一些,可以同时执行多个步骤...其他语言调用 据笔者所知,在dotNET语言可以轻松调用PowerShell脚本,至于如何实现,笔者没有深入研究过,有兴趣的可以自行google一下。
0x00 PowerShell的内网渗透之旅 内网渗透一直以来都是一个热门话题,试想在一个大型的内网环境下,当我们拿到了内网windows机器后,该如何通过他们去获取更多的所需资源,这就需要进行内网渗透了...b.别名机制:如常见的powershell命令----Get-ChildItem,windows的CMD命令----dir和linux的shell命令----ls,他们的功能都是列出当前文件或目录的命令...变量: a.定义变量:Powershell不需要声明变量,可自动创建变量,变量值可以是字符也可以是命令,但是变量名前必须有$。 ? ?...注意:输出多个变量时需要使用双引号,单引号是不会取变量中的值的。 也可使用New-Variable定义变量,此时可以指定变量的一些属性,如访问权限: 以下给num变量添加只读属性。 ?...函数: a).函数是自定义的powershell代码,有三个原则: ●简短:函数名简短,并且显而易见 ●聚合:函数可以完成多个操作 ●封装和扩展:将一批powershell语句进行封装,实现全新的功能需求函数结构
通过命令行传递给Powershell的代码基本上是base64编码的,并用gzip压缩的,只有尾部一小部分没有编码。...除了两个switch外,“pre_logic”函数还支持四个参数,这四个参数随后将传递给下一阶段的“logic”函数。这些参数决定,下一个感染阶段发送DNS TXT记录查询时,要使用哪些子域。...这个函数会用DNS查询响应结果中获得的代码,定义一个包含该代码的字符串变量。然后,第三阶段中的解码函数会被调用,并将解码的字符串传递给IEX,来扩展Powershell环境。...这一步完成后,将调用新扩展环境中的一个函数,来执行第四阶段代码,并设置特定参数。这些参数包含后续将用到的第四阶段C2域名和将执行的程序,即Windows命令行处理器(cmd.exe)。...下图就是整个C2通信的过程。注意在通信过程中,可能有许多个“MSG”查询和响应,这取决于攻击者想要在感染设备上执行的命令。 ? 下图展示了不同的消息及其响应是如何形成的。 ?
,因为首选项变量“DebugPreference”或通用参数被设置为 Stop。...2.Write-Host 命令 - 自定义定制输出 描述:您可以通过把ForegroundColor参数指定文本的颜色,你可以通过使用BACKGROUNDCOLOR参数中指定的背景色 Write-Host...- 指定PowerShell如何处理命令的信息流数据。...1.如果对象流是字符串流,请Out-Default 直接将Out-Host它们通过管道传递给主机,以调用主机提供的相应API。...# 3.注意输出的不同。Raw参数将数字显示为4字节值,与Int32类型相同。
领取专属 10元无门槛券
手把手带您无忧上云