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