1. 首页 > 科技快讯 >

PowerShell入门(三):如何快速地掌握Power

PowerShell入门(三):如何快速地掌握PowerShell?

有效利用交互式环境 一般来说,PowerShell有两个主要的运行环境:PowerShell和PowerShell ISE。前者是PowerShell的运行环境,后者是PowerShell集成脚本环境,也就是编写脚本(.ps1)的地方。当然,你也可以使用记事本或者其他编辑器来编写脚本。对于初学者来说,一上来就写脚本不是个好主意。但是如果有些人非这么做不可,或者被迫这么做(亲,你懂的),那么我也建议你善于利于交互式环境。写每一条脚本之前先运行一下,看看效果,如果正确,再到脚本中。当然,如果你已经对PowerShell有一定动力了,你就不用听我在这里乱盖了 充分利用帮助文档 需不需要买本书呢?这个问题因人而异。我在学习PowerShell之初看了Mining出版社的《PowerShell in Action》,原版的。感觉人家写的真好,跟似的。看的时候都不想敲代码了,有点上瘾的那种感觉。可惜的是,我看过之后,好长时间没有碰PowerShell。后来再捡起PowerShell的时候,竟然想不起来那本书里写了点啥,看来以后还得再看一遍。 话说回来,不管你案头有没有参考书,帮助文档一定是会很有用的。关于帮助文档,你怎么看?我有两种看法,一个是在写代码的时候,稍微遇到不清楚的地方,我就会查帮助文档,或者找到合适的命令,或者确认某个参数的用法,很好用;另一种看法是,我把几个相关的帮助下来,打印出来,坐在工位一边喝茶一边看,或者早上上班的时候,在公交车上看。你要是看到699或者614上有一个男的,有凳子不坐,站在那里手里拿了几页打印的纸在看,上面是关于PowerShell的,那就是我 读代码和学语法 国内很多语言入门的书,都有点教科书的倾向,一般都是先讲由来,接着是基本类型和运算符,然后是逻辑控制,再然后是文件和数据库处理,是某些重要领域的支持和处理方法。这类书的好处是,如果你能够耐着性子看下去,等到把书看完的时候,你就会有小成了。但问题是,我的耐心往往不够,宁愿把书拆开了,一点一点的看。 结语作为本篇结束,我有一句忠告,就是把你的兴趣当作一个你必须讨好的人,不要累着它,要惯着它,常常拿些小的成就感它,这样它就会很配合,你也不会神经衰弱。

PowerShell入门(三):如何快速地掌握PowerPowerShell入门(三):如何快速地掌握Power


如何运行PowerShell的脚本文件

运行PowerShell脚本有两种方式.

在运行任何脚本文件之前, 你都必须首先设置一个恰当的Execution Policy.

PowerShell脚本跟Windows CMD一样, 和MS-DOS批处理一样, 文件需要被保存为.ps1后缀名, 比如说myscript.ps1

通常的运行脚本的方法是调用它:

PS C:\> & "C:\Belfry\My first Script.ps1"

注意: 这里的"&"作符能允许你调用一个命令, 脚本, 或函数. 比如:

PS C:\> & "C:\Program files\mycommand.exe"

PS C:\> $runMyProg = "C:\Program files\mycommand.exe"

PS C:\> & $runMyProg

PS C:\> $myPing = Get-Command -commandType Application Ping

PS C:\> & $myPing

如果路径不包含任何的空格, 那么你就可以忽略引号和'&'作符.

PS C:\> C:\Belfry\Myscript.ps1

如果脚本就在当前路径下, 你必须使用符号".\"来告诉PowerShell该脚本就在当前路径下.

PS C:\> .\Myscript.ps1

Dot Sourcing

=====================

当使用上面的语法执行脚本的时候, 脚本中定义的变量和函数会在脚本运行结束后消失.

但, 如果你使用dot sourcing来运行脚本的时候, 所有脚本中定义的变量和函数会在脚本运行结束后依然存在.

举例运行dot-sourcing脚本.

PS C:\> . "C:\Belfry\My first Script.ps1"

举例运行dot-sourcing在当前路径下的脚本.

PS C:\> . .\Myscript.ps1"

批处理如何在指定文件夹内搜索某个关键字,包含这个关键字的文件或文件夹要删除?

您可以使用批处理的 forfiles 命令来在指定的文件夹内搜索某个关键字,并删除包含这个关键字的文件或文件夹。具体的做法如下:

在批处理文件中,首先使用 cd 命令切换到要搜索的文件夹所在的目录。

然后,使用 forfiles 命令来进行搜索。该命令的语法如下:

forfiles /P

/S /M /C "cmd /c del /Q @path" 其中,

/P 参数指定要搜索的文件夹路径,例如 /P C:\my_folder。

/S 参数表示递归搜索子目录。

/M 参数指定要搜索的文件名关键字,例如 /M keyword。这里的 符号表示任意字符,因此搜索的结果会包含以关键字开头或结尾的文件名。

/C 参数指定对找到的文件进行的作,即删除这些文件。在这里,我们使用 cmd /c del /Q @path 来删除文件。

例如,下面的批处理命令会在 C 盘的 my_folder 文件夹内递归搜索以 keyword 开头或结尾的文件,并删除它们:

cd C:\

forfiles /P my_folder /S /M keyword /C "cmd /c del /Q @path" 请注意,使用 forfiles 命令删除文件

打开文本编辑器,例如记事本,并输入以下内容:

@echo off

rem 设置搜索路径和关键字

set searchPath=c:\test

set searchKey=keyword

rem 查找包含关键字的文件

for /f "delims=" %%i in ('dir /b /s /a-d "%searchPath%" ^| findstr /i /c:"%searchKey%"') do (

rem 删除包含关键字的文件

del "%%i"

)rem 查找包含关键字的文件夹

for /f "delims=" %%i in ('dir /b /s /ad "%searchPath%" ^| findstr /i /c:"%searchKey%"') do (

rem 删除包含关键字的文件夹

rd "%%i" /s /q

)保存文件为 delete.bat,并将文件拖拽到命令行窗口中,按回车键运行批处理文件

虽然您已经采纳的别人的答案,但还看到您追问,关键词在列表中应该怎么弄?但尚未看到有答复,那么我就来回答一下吧!希望对您有用。

@echo off & title 根据列表中的关键词删除包含关键词的文件(夹) By 依梦琴瑶

::设置关键词列表文件

set List=KeyWordList.txt

for /f "usebackq delims=" %%a in ("%List%") do (

for /f "delims=" %%b in ('dir /a/s/b "%%~a"') do (

dir /ad "%%~b" >nul 2>nul (

rd /s /q "%%~b"

) || (

del /f /q "%%~b"

))

)pause

powershell运行py脚本无输出

PowerShell可以执行输入/输出重定向,只是不能做到与bash完全相同的方式。

我假设您不想真正学习PowerShell,只是快速而又肮脏的答案。因此,这里去。

对于简单的情况,类似bash的语法可以正常工作:

1foo > out.txt

如果这不起作用,通常只需要将工具包装在Powershell scriptlet中即可。换句话说,在其中创建一个foo.ps1文件:

1foo > out.txt

然后只需运行foo.ps1而不是foo。

您可能还需要查看Tee-Object,Set-Content,Add-Content和Start-Transcript等cmdlet。从Windows PowerShell Cmdlet的基于任务的指南开始。

powershell脚本怎么运行

在运行任何脚本文件之前, 你都必须首先设置一个恰当的Execution Policy.

PowerShell脚本跟Windows CMD一样, 和MS-DOS批处理一样, 文件需要被保存为.ps1后缀名, 比如说myscript.ps1

通常的运行脚本的方法是调用它:

PS C:\ & C:\Belfry\My first Script.ps1

注意: 这里的&作符能允许你调用一个命令, 脚本, 或函数. 比如:

PS C:\ & C:\Program files\mycommand.exe

PS C:\ $runMyProg = C:\Program files\mycommand.exe

PS C:\ & $runMyProg

PS C:\ $myPing = Get-Command -commandType Application Ping

PS C:\ & $myPing

如果路径不包含任何的空格, 那么你就可以忽略引号和'&'作符.

PS C:\ C:\Belfry\Myscript.ps1

如果脚本就在当前路径下, 你必须使用符号.\来告诉PowerShell该脚本就在当前路径下.

PS C:\ .\Myscript.ps1

Dot Sourcing

=====================

当使用上面的语法执行脚本的时候, 脚本中定义的变量和函数会在脚本运行结束后消失.

powershell语法之:Set-Variable,谁能帮我解释下,3Q

为变量设值. 如果该变量不存在, 则创建该变量.

表示加一个名字" EXIT_CODE_NORMAL"的变量,值为 0,生存期为当前脚本,并且一旦生成参数就不可以被删除或更改

重定向运算符,删除输出,不将其发送到控制台。

Win7系统Powershell命令的详细介绍

小编这里要跟大家分享的是关于Win7系统Powershell命令的详细介绍,利用windows7系统中cmd的升级版windowspowershell可以更高效的管理系统,虽然命令提示符的使用频率虽然不高,但它在系统和网络管理维护工作中都起着很重要的作用,windowspowerShell究竟是什么呢,它又可以完成哪些工作呢?接下来就跟小编一起来学习吧。

一、什么是windowspowerShell:

win7系统中的windowspowerShell是微软为windows系统开shell及脚本语言技术,它的出现同时弥补了和unix系统相比windows在Shell方面的不足,同时也为程序开发人员提供了一种更高效的编写脚本的工具。在windows7中已经整合了powerShellV2且支持图形界面作。

二、怎么启动windowspowerShell:

要在win7系统中启动windowspowerShell非常简单,直接点击电脑桌面的“开始”按钮,然后在搜索栏中输入PowerShell,在搜索结果里即可找到windowspowerShell并进入命令行模式的界面,然后选择windowspowerShellV2ISE后就可以进入到windowspowerShell的图形窗口模式。此外也可以在传统的CMD窗口中输入PowerShell后按下回画运行PowerShell。

三、PowerSHell如何上手:

1、PowerShell可以管理系统进程、服务、注册表、系统日志、证书等多项内容,我们只需要在窗口内输入get-command并按下回车就可以了,这时屏幕上会显示所有PowerShell支持的命令,而且还会显示名称和描述。

2、想查看某个命令的详细用法就可以使用get-helt命令来获得帮助,比如要查看add-content命令的详细内容,就可以输入get-helpadd-content,按下回车后就会显示命令的名称、摘要、语法、详细说明、相关链接以及备注。

3、PowerShell还可以方便地查看和结束系统内的进程,不仅可以监控系统内的可疑进程还可以轻松地将其关闭,打开PowerShell,输入get-process后按下回车,这样系统中进程的句柄、进程名、进程占用处理器时间和进程标识符就会显示出来。

4、如果要结束某个或多个进程,就需要记录下进程的标识符,在powerShell中输入Stop-process后根据提示输入一个或多个进程的ID,按下回车后进程即可被自动结束。

5、如需要给get-process设置别外,就可以在powershell中输入set-aliasgpget-process,其中gp为命令get-process的别外,按下回车后直接用gp就可以代替get-process命令了。

6、很多系统内建的工具也可以在powershell中设置别名了,比如在powershell中输入notepad后就可以启动记事本。要想更快地启动记事本,就可以为其设置别名,输入set-aliasnpnotepad后按下回车,这样再次输入np就可以打开记事本了。

关于Win7系统Powershell命令的介绍就跟大家分享到这里了。

SQL SERVER 2012 作业执行POWERSHELL脚本

oracle 10g的DBMS_XPLAN包中display_cursor函数不同于display函数,display_cursor用于显示SQL语句的真实的执行,在大多数情况下,

显示真实的执行有助于更好的分析SQL语句的全过程,尤其是运行此SQL语句实时的I/O开销。通过对比预估的I/O与真实的I/O开销来判断

SQL语句所存在问题,如缺少统计信息,SQL语句执行的次数,根据实际中间结果集的大小来选择合适的连接方式等。本文仅仅讲述

display_cursor函数的使用。

一、display_cursor函数用法

1、display_cursor函数语法

DBMS_XPLAN.DISPLAY_CURSOR(

sql_id IN VARCHAR2 DEFAULT NULL,

cursor_child_no IN NUMBER DEFAULT NULL,

format IN VARCHAR2 DEFAULT 'TYPICAL');

2、display_cursor函数参数描述

sql_id

指定位于库缓存执行中SQL语句的父游标。默认值为null。当使用默认值时当前会话的一条SQL语句的执行将被返回

可以通过查询V$SQL 或V$SQLAREA的SQL_ID列来获得SQL语句的SQL_ID。

cursor_child_no

指定父游标下子游标的序号。即指定被返回执行的SQL语句的子游标。默认值为0。如果为null,则sql_id所指父游标下所有子游标

的执行都将被返回。

format

控制SQL语句执行的输出部分,即哪些可以显示哪些不显示。使用与display函数的format参数与修饰符在这里同样适用。

除此之外当在开启statistics_level=all时或使用gather_plan_statistics提示可以获得执行中实时的统计信息

有关详细的format格式描述请参考:dbms_xplan之display函数的使用 中format参数的描述

下面给出启用统计信息时format新增的修饰符

iostats 控制I/O统计的显示

last 默认,显示所有执行计算过的统计。如果指定该值,则只显示一次执行的统计信息

memstats 控制pga相关统计的显示

allstats 此为iostats memstats的快捷方式,即allstats包含了iostats和memstats

run_stats_last 等同于iostats last。只能用于oracle 10g R1

run_stats_tot 等同于iostats。只能用于oracle 10g R1

抓一个近一小时消耗IO的SQL:

SELECT sql_id, COUNT()

FROM gv$active_session_history ash, gv$event_name evt

WHERE ash.sample_time > SYSDATE - 1 / 24

AND ash.session_state = 'WAITING'

AND ash.event_id = evt.event_id

AND evt.wait_class = 'User I/O'

GROUP BY sql_id

ORDER BY COUNT() DESC;

执行上面的SQL:

SQL> SELECT sql_id, COUNT()

FROM gv$active_session_history ash, gv$event_name evt

2 3 WHERE ash.sample_time > SYSDATE - 1 / 24

4 AND ash.session_state = 'WAITING'

5 AND ash.event_id = evt.event_id

6 AND evt.wait_class = 'User I/O'

7 GROUP BY sql_id

8 ORDER BY COUNT() DESC;

SQL_ID COUNT()

------------- ----------

g7fu6qba82m6b 668

63r47zyphdk06 526

9f5m4wd88nc1h 514

593p47drw5fhk 232

br91w16jzy4fu 120

4fvwyjpnh6tp7 78

gm0nrbfuj8kzr 70

2184k363hw4xd 68

gc4dajs7g5myy 46

8vrk9sfuwfdgq 42

ccpnb4dwdmq21 40

查看SQL的执行:

SELECT FROM TABLE(dbms_xplan.display_cursor('g7fu6qba82m6b'));

在SQLPLUS中执行:

SQL> set pagesize 2000

SQL> SELECT FROM TABLE(dbms_xplan.display_cursor('g7fu6qba82m6b'));

PLAN_TABLE_OUTPUT

------------------------------------------------------------------------------------------------------------------------

SQL_ID g7fu6qba82m6b, child number 0

-------------------------------------

UPDATE "CPDDS_PDATA"."CDM_LEDGER" SET "CSTM_NAME" = :a1,"CSTM_NO" =

:a2,"PAPER_TYPE" = :a3,"PAPER_NO" = :a4,"CURR_TYPE" = :a5,"SVT_NO" =

:a6,"BAL_DIR" = :a7,"BAL" = :a8,"AVAL_BAL" = :a9,"NORM_FRATIO" =

:a10,"PK_BAL" = :a11,"DR_ACCU" = :a12,"CR_ACCU" = :a13,"LAST_TRAN_DATE" =

:a14,"LAST_TRAN_TIME" = :a15,"PRT_LINE_NUM" = :a16,"NOREG_PK_REC_NUM" =

:a17,"PK_NO" = :a18,"PWD" = :a19,"FLAG" = :a20,"FRZ_FLAG" =

:a21,"CARD_HOLD_FLAG" = :a22,"PK_HOLD_FLAG" = :a23,"BGN_INT_DATE" =

:a24,"OPEN_DATE" = :a25,"ACC_HOLD_FLAG" = :a26,"CLS_DATE" =

:a27,"OPEN_TLR" = :a28,"CLS_TLR" = :a29,"CLS_INT" = :a30,"OPEN_INST" =

:a31,"ADD_NUM" = :a32,"DAC" = :a33,"FRZ_TIMES1" = :a34,"FRZ_TIMES2" =

:a35,"HOST_SEQNO" = :a36,"D_UPDATE_DATE" = :a37 WHERE "ACC" = :b0

Plan hash value: 319441092

-----------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

-----------------------------------------------------------------------------------

| 0 | UPDATE STATEMENT | | | | 3 (100)| |

| 1 | UPDATE | CDM_LEDGER | | | | |

| 2 | INDEX UNIQUE SCAN| I_CDM_LEDGER | 1 | 269 | 2 (0)| 00:00:01 |

-----------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

2 - access("ACC"=:B0)

29 rows selected.

总结

1、与display函数不同,display_cursor显示的为真实的执行

2、对于format参数,使用与display函数的各个值,同样适用于display_cursor函数

3、当statistics_level为all或使用gather_plan_statistics提示可以获得执行时的统计信息

4、根据真实与预估的统计信息可以初步判断SQL效率低下的原因,如统计信息的准确性、主要的开销位于那些步骤等

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息