Powershell————2、Powershell交互式

Powershell进行数学运算

我们可以把powershell当成一个计算器。和键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持。

PowerShell也能自动识别计算机容量单位,包括KB,MB,GB,TB,PB

假如一个网站每个页面大小为80kb,统计显示每天的PV操作为800,1个月下来占用的带宽:


假如一个网站的每天人均PV操作为5,页面大小为80Kb,主机提供商限制的总流量为10G,那平均每天的最大访客数为:


执行外部命令

通过netstat查看网络端口状态

PS C:\PS> netstat

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    192.168.0.100:3049    192.168.0.88:7575       ESTABLISHED
  TCP    192.168.0.100:3052    192.168.0.88:7575       ESTABLISHED
  TCP    192.168.0.100:3061    192.168.0.88:7575       ESTABLISHED

使用ipconfig查看自己的网络配置

PS C:\PS> ipconfig

Windows IP Configuration

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : www.mossfly.com
   Link-local IPv6 Address . . . . . : fe80::b9dd:91e33:33f0:7885%10
   IPv4 Address. . . . . . . . . . . : 192.168.140.100
   Subnet Mask . . . . . . . . . . . : 255.255.252.0
   Default Gateway . . . . . . . . . : 192.168.140.1

Tunnel adapter isatap.www.mossfly.com:

   Connection-specific DNS Suffix  . : www.mossfly.com
   Link-local IPv6 Address . . . . . : fe80::5efe:192.168.140.100%11
   Default Gateway . . . . . . . . . :

Tunnel adapter Teredo Tunneling Pseudo-Interface:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

查看路由信息

PS C:\PS> route print
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0     192.168.140.1   192.168.140.100     20
        192.0.0.0        255.0.0.0         On-link         192.0.0.1    306
        192.0.0.1  255.255.255.255         On-link         192.0.0.1    306
  192.255.255.255  255.255.255.255         On-link         192.0.0.1    306
     192.168.140.0    255.255.252.0         On-link    192.168.140.100    276
   192.168.140.100  255.255.255.255         On-link    192.168.140.100    276
   192.168.143.255  255.255.255.255         On-link    192.168.140.100    276
        224.0.0.0        240.0.0.0         On-link         192.0.0.1    306
        224.0.0.0        240.0.0.0         On-link    192.168.140.100    276
  255.255.255.255  255.255.255.255         On-link         192.0.0.1    306
  255.255.255.255  255.255.255.255         On-link    192.168.140.100    276
===========================================================================
Persistent Routes:
  None

IPv6 Route Table
===========================================================================
Active Routes:
 If Metric Network Destination      Gateway
  1    306 ::1/128                  On-link
 10    276 fe80::/64                On-link
 11    281 fe80::5efe:192.168.140.100/128
                                    On-link
 10    276 fe80::b965:91f3:33a0:7285/128
                                    On-link
  1    306 ff00::/8                 On-link
 10    276 ff00::/8                 On-link
===========================================================================
Persistent Routes:
  None

启动CMD控制台键入cmd或者cmd.exe,退出cmd可以通过命令exit。

PS C:\PS> cmd
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\PS>exit
PS C:\PS>

查找可用的cmd控制台命令

cmd.exe 通过 /c 来接收命令参数,在cmd中help可以查看可用的命令,所以可以通过dmd /c help 查找可用的cmd控制台命令

PS C:\PS> cmd /c help
有关某个命令的详细信息,请键入 HELP 命令名
ASSOC          显示或修改文件扩展名关联。
ATTRIB         显示或更改文件属性。
BREAK          设置或清除扩展式 CTRL+C 检查。
BCDEDIT        设置启动数据库中的属性以控制启动加载。
CACLS          显示或修改文件的访问控制列表(ACL)。
CALL           从另一个批处理程序调用这一个。
CD             显示当前目录的名称或将其更改。
CHCP           显示或设置活动代码页数。
CHDIR          显示当前目录的名称或将其更改。
CHKDSK         检查磁盘并显示状态报告。
CHKNTFS        显示或修改启动时间磁盘检查。
CLS            清除屏幕。
CMD            打开另一个 Windows 命令解释程序窗口。
COLOR          设置默认控制台前景和背景颜色。
COMP           比较两个或两套文件的内容。
COMPACT        显示或更改 NTFS 分区上文件的压缩。
CONVERT        将 FAT 卷转换成 NTFS。您不能转换
               当前驱动器。
COPY           将至少一个文件复制到另一个位置。
DATE           显示或设置日期。
DEL            删除至少一个文件。
DIR            显示一个目录中的文件和子目录。
DISKCOMP       比较两个软盘的内容。
DISKCOPY       将一个软盘的内容复制到另一个软盘。
DISKPART       显示或配置磁盘分区属性。
DOSKEY         编辑命令行、调用 Windows 命令并创建宏。
DRIVERQUERY    显示当前设备驱动程序状态和属性。
ECHO           显示消息,或将命令回显打开或关上。
ENDLOCAL       结束批文件中环境更改的本地化。
ERASE          删除一个或多个文件。
EXIT           退出 CMD.EXE 程序(命令解释程序)。
FC             比较两个文件或两个文件集并显示它们之间的不同。
FIND           在一个或多个文件中搜索一个文本字符串。
FINDSTR        在多个文件中搜索字符串。
FOR            为一套文件中的每个文件运行一个指定的命令。
FORMAT         格式化磁盘,以便跟 Windows 使用。
FSUTIL         显示或配置文件系统的属性。
FTYPE          显示或修改用在文件扩展名关联的文件类型。
GOTO           将 Windows 命令解释程序指向批处理程序
               中某个带标签的行。
GPRESULT       显示机器或用户的组策略信息。
GRAFTABL       启用 Windows 在图形模式显示扩展字符集。
HELP           提供 Windows 命令的帮助信息。
ICACLS         显示、修改、备份或还原文件和
 目录的 ACL。
IF             在批处理程序中执行有条件的处理过程。
LABEL          创建、更改或删除磁盘的卷标。
MD             创建一个目录。
MKDIR          创建一个目录。
MKLINK         创建符号链接和硬链接
MODE           配置系统设备。
MORE           逐屏显示输出。
MOVE           将一个或多个文件从一个目录移动到另一个目录。
OPENFILES      显示远程用户为了文件共享而打开的文件。
PATH           为可执行文件显示或设置搜索路径。
PAUSE          停止批处理文件的处理并显示信息。
POPD           还原由 PUSHD 保存的当前目录上一次的值。
PRINT          打印一个文本文件。
PROMPT         改变 Windows 命令提示。
PUSHD          保存当前目录,然后对其进行更改。
RD             删除目录。
RECOVER        从损坏的磁盘中恢复可读取的信息。
REM            记录批处理文件或 CONFIG.SYS 中的注释。
REN            重新命名文件。
RENAME         重新命名文件。
REPLACE        替换文件。
RMDIR          删除目录。
ROBOCOPY       复制文件和目录树的高级实用程序
SET            显示、设置或删除 Windows 环境变量。
SETLOCAL       开始用批文件改变环境的本地化。
SC             显示或配置服务(后台处理)。
SCHTASKS       安排命令和程序在一部计算机上按计划运行。
SHIFT          调整批处理文件中可替换参数的位置。
SHUTDOWN       让机器在本地或远程正确关闭。
SORT           将输入排序。
START          打开单独视窗运行指定程序或命令。
SUBST          将驱动器号与路径关联。
SYSTEMINFO     显示机器的具体的属性和配置。
TASKLIST       显示包括服务的所有当前运行的任务。
TASKKILL       终止正在运行的进程或应用程序。
TIME           显示或设置系统时间。
TITLE          设置 CMD.EXE 会话的窗口标题。
TREE           以图形显示启动器或路径的目录结构。
TYPE           显示文本文件的内容。
VER            显示 Windows 的版本。
VERIFY         告诉 Windows 验证文件是否正确写入磁盘。
VOL            显示磁盘卷标和序列号。
XCOPY          复制文件和目录树。
WMIC           在交互命令外壳里显示 WMI 信息。

启动外部程序

为什么可以通过notpad打开记事本,不能通过wordpad打开写字板?
因为notepad.exe位于C:Windows\system32这个目录,而这个目录已经默认被包含在Powershell的环境变量$env:Path中。

C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x
86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program File
s (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files\Microsoft\Web Platform Installer\

而wordpad.exe 所在的“%ProgramFiles%\WindowsNT\Accessories\wordpad.exe“目录却没有包含,可以先进入这个目录,再运行wordpad,或者将wordpad所在的目录加入到环境变量中,
$env:Path=$env:Path+”%ProgramFiles%\Windows NT\Accessories”。
默认键入一个字符串,powershell会将它原样输出,如果该字符串是一个命令或者启动程序,在字符串前加‘&’可以执行命令,或者启动程序。

PS C:\PS> "ls"
ls
PS C:\PS> &"ls"

    Directory: C:\PS

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2011/11/23     17:25            ABC
-a---        2011/11/23     17:36         14 a.txt
-a---        2011/11/23     17:25          0 b.txt
-a---        2011/11/23     17:25          0 c.txt
-a---        2011/11/23     17:25          0 d.txt
-a---        2011/11/23     17:37        242 test.txt

PS C:\PS> "cmd.exe"
cmd.exe
PS C:\PS> &"cmd.exe"
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

别名

cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然。但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊。能不能把命令缩短一点呢?于是“别名”就应运而生了。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:ls 和 dir,这两个别名来源于unix 的shell和windows的cmd。
因此别名有两个作用:

继承:继承unix-shell和windows-cmd。

方便:方便用户使用。

处理别名:

查询别名所指的真实cmdlet命令。

PS C:\PS> Get-Alias -name ls

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           ls                                                  Get-ChildItem

PS C:\PS> Get-Alias -name dir

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           dir                                                 Get-ChildItem

PS C:\PS> Get-Alias -name fl

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           fl                                                  Format-List

PS C:\PS> Get-Alias -name ft

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           ft                                                  Format-Table

查看可用的别名

查看可用的别名,可以通过” ls alias:” 或者 ”Get-Alias“
如何查看所有以Remove打头的cmdlet的命令的别名呢?

PS C:\PS> dir alias: | where {$_.Definition.Startswith("Remove")}

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           del                                                 Remove-Item
Alias           erase                                               Remove-Item
Alias           rbp                                                 Remove-PSBreakpoint
Alias           rd                                                  Remove-Item
Alias           rdr                                                 Remove-PSDrive
Alias           ri                                                  Remove-Item
Alias           rjb                                                 Remove-Job
Alias           rm                                                  Remove-Item
Alias           rmdir                                               Remove-Item
Alias           rmo                                                 Remove-Module
Alias           rp                                                  Remove-ItemProperty
Alias           rsn                                                 Remove-PSSession
Alias           rsnp                                                Remove-PSSnapin
Alias           rv                                                  Remove-Variable
Alias           rwmi                                                Remove-WMIObject

说明:dir alias:获取的是别名的数组,通过where对数组元素进行遍历,$_代表当前元素,alias的Definition为String类型,因为powershell支持.net,.net中的string类有一个方法Startswith。通过where过滤集合在powershell中使用非常广泛。

有的cmdlet命令可能有2-3个别名,我们可以通过下面的命令查看所有别名和指向cmdlet的别名的个数。

PS C:\PS> ls alias: | Group-Object definition | sort -Descending Count

Count Name                      Group
----- ----                      -----
    6 Remove-Item               {del, erase, rd, ri...}
    3 Set-Location              {cd, chdir, sl}
    3 Get-History               {ghy, h, history}
    3 Get-ChildItem             {dir, gci, ls}
    3 Get-Content               {cat, gc, type}
    3 Move-Item                 {mi, move, mv}
    3 Copy-Item                 {copy, cp, cpi}
    2 Start-Process             {saps, start}
    2 Set-Variable              {set, sv}
    2 Write-Output              {echo, write}
    2 Get-Process               {gps, ps}
    2 Invoke-History            {ihy, r}
    2 New-PSDrive               {mount, ndr}
    2 Stop-Process              {kill, spps}
    2 Rename-Item               {ren, rni}
    2 Get-Location              {gl, pwd}
    2 Compare-Object            {compare, diff}
    2 Where-Object              {?, where}
    2 ForEach-Object            {%, foreach}
    2 Clear-Host                {clear, cls}
    1 Out-Host                  {oh}
    1 New-PSSession             {nsn}
    1 New-Variable              {nv}
    1 Out-GridView              {ogv}
    1 Pop-Location              {popd}
    1 Tee-Object                {tee}
    1 Remove-PSBreakpoint       {rbp}
    1 Receive-Job               {rcjb}
    1 Push-Location             {pushd}
    1 mkdir                     {md}
    1 Measure-Object            {measure}
    1 help                      {man}
    1 Remove-PSSnapin           {rsnp}
    1 Out-Printer               {lp}
    1 New-Item                  {ni}
    1 New-Module                {nmo}
    1 New-Alias                 {nal}
    1 Move-ItemProperty         {mp}
    1 Wait-Job                  {wjb}
    1 Remove-PSDrive            {rdr}
    1 Start-Service             {sasv}
    1 Set-PSBreakpoint          {sbp}
    1 Set-ItemProperty          {sp}
    1 Start-Job                 {sajb}
    1 Set-Alias                 {sal}
    1 Start-Sleep               {sleep}
    1 Set-Item                  {si}
    1 Select-Object             {select}
    1 Set-Content               {sc}
    1 Sort-Object               {sort}
    1 Remove-WMIObject          {rwmi}
    1 Remove-Module             {rmo}
    1 Rename-ItemProperty       {rnp}
    1 Stop-Service              {spsv}
    1 Set-WMIInstance           {swmi}
    1 Remove-Job                {rjb}
    1 Remove-Variable           {rv}
    1 Resolve-Path              {rvpa}
    1 Stop-Job                  {spjb}
    1 Remove-ItemProperty       {rp}
    1 Remove-PSSession          {rsn}
    1 Exit-PSSession            {exsn}
    1 Format-Custom             {fc}
    1 Enter-PSSession           {etsn}
    1 Export-Csv                {epcsv}
    1 Export-PSSession          {epsn}
    1 Format-List               {fl}
    1 Get-PSBreakpoint          {gbp}
    1 Get-Command               {gcm}
    1 Get-Alias                 {gal}
    1 Format-Table              {ft}
    1 Format-Wide               {fw}
    1 Export-Alias              {epal}
    1 Clear-History             {clhy}
    1 Clear-Item                {cli}
    1 Clear-Content             {clc}
    1 Add-Content               {ac}
    1 Add-PSSnapIn              {asnp}
    1 Clear-ItemProperty        {clp}
    1 Disable-PSBreakpoint      {dbp}
    1 Enable-PSBreakpoint       {ebp}
    1 Convert-Path              {cvpa}
    1 Clear-Variable            {clv}
    1 Copy-ItemProperty         {cpp}
    1 Invoke-Expression         {iex}
    1 Invoke-Item               {ii}
    1 Invoke-Command            {icm}
    1 Get-Variable              {gv}
    1 Get-WmiObject             {gwmi}
    1 Import-Alias              {ipal}
    1 powershell_ise.exe        {ise}
    1 Invoke-WMIMethod          {iwmi}
    1 Import-PSSession          {ipsn}
    1 Import-Csv                {ipcsv}
    1 Import-Module             {ipmo}
    1 Get-Unique                {gu}
    1 Get-Job                   {gjb}
    1 Get-Member                {gm}
    1 Get-Item                  {gi}
    1 Get-PSCallStack           {gcs}
    1 Get-PSDrive               {gdr}
    1 Get-Module                {gmo}
    1 Get-PSSnapIn              {gsnp}
    1 Get-Service               {gsv}
    1 Get-PSSession             {gsn}
    1 Get-ItemProperty          {gp}
    1 Group-Object              {group}

创建自己的别名

给记事本创建一个别名,并查看该别名;

PS C:\PS> Set-Alias -Name Edit -Value notepad
PS C:\PS> Edit
PS C:\PS> $alias:Edit
notepad

删除自己的别名

别名不用删除,自定义的别名在powershell退出时会自动清除。但是请放心,powershell内置别名(诸如ls,dir,fl等)不会清除。如果你非得手工删除别名。请使用

PS C:\PS> del alias:Edit

保存自己的别名

可以使用Export-Alias将别名导出到文件,需要时再通过Import-Alias导入。但是导入时可能会有异常,提示别名已经存在无法导入:

PS C:\PS> Import-Alias alias.ps1
Import-Alias : Alias not allowed because an alias with the name 'ac' already exists.
At line:1 char:13
+ Import-Alias <<<<  alias.ps1
    + CategoryInfo          : ResourceExists: (ac:String) [Import-Alias], SessionStateException
    + FullyQualifiedErrorId : AliasAlreadyExists,Microsoft.PowerShell.Commands.ImportAliasCommand

这时可以使用Force强制导入。

PS C:\PS> Export-Alias alias.ps1
PS C:\PS> Import-Alias -Force alias.ps1

Powershell 通过函数扩展别名

在Powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息。尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢?例如Test-Connection-Count 2 -ComputerName,让-“-Count 2” 固化在别名中。
这时简单的别名无法完成上述需求,可以通过函数来完成它,并且一旦把函数拉过来,定义别名会变得更加灵活。

PS C:\PS> function test-conn { Test-Connection  -Count 2 -ComputerName $args}
PS C:\PS> Set-Alias tc test-conn
PS C:\PS> tc localhost

Source        Destination     IPV4Address      IPV6Address                              Bytes    Time(ms)
------        -----------     -----------      -----------                              -----    --------
test-me-01   localhost       127.0.0.1        ::1                                      32       0
test-me-01   localhost       127.0.0.1        ::1                                      32       0

Powershell执行文件和脚本

像运行可执行文件一样,Powershell运行文件和脚本,也必须使用绝对路径或者相对路径,或者要运行的文件必须定义在可受信任的环境变量中。

关于脚本

脚本和批处理都属于伪可执行文件,它们只是包含了若干命令行解释器能够解释和执行的命令行代码。

执行批处理文件

批处理是扩展名为”.bat”的文本文件,它可以包含任何cmd控制台能够处理的命令。当批处理文件被打开,Cmd控制台会逐行执行每条命令。那Powershell能够直接执行批处理吗?
将下列命令保存为ping.bat

@echo off
echo batch File Test
pause
Dir %windir%/system

然后执行ping
屏幕会打印ping命令帮助,说明调用的ping cmd 而不是ping.bat。
改为:

PS C:\PS> ./ping
batch File Test
Press any key to continue . . .
 Volume in drive C has no label.
 Volume Serial Number is 4E9B-D846

 Directory of C:Windowssystem

2009/06/11  05:21            69,584 avicap.dll
2009/06/11  05:21           109,456 avifile.dll
2009/07/14  05:41            32,816 COMMDLG.DLL
2009/07/14  05:41             2,000 keyboard.drv
2009/06/11  05:42             9,936 lzexpand.dll
2009/06/11  05:21            73,376 mciavi.drv
2009/06/11  05:21            25,264 mciseq.drv
2009/06/11  05:21            28,160 mciwave.drv
2009/07/14  05:41            68,992 MMSYSTEM.DLL
2009/07/14  05:41             1,152 mmtask.tsk
2009/07/14  05:41             2,032 mouse.drv
2009/06/11  05:21           126,912 msvideo.dll
2009/06/11  05:42            82,944 olecli.dll
2009/07/14  05:41            24,064 OLESVR.DLL
2009/07/14  05:41             5,120 SHELL.DLL
2009/07/14  05:41             1,744 sound.drv
2009/06/11  05:25             5,532 stdole.tlb
2009/07/14  05:41             3,360 system.drv
2009/07/14  05:41             4,048 TIMER.DRV
2009/06/11  05:42             9,008 ver.dll
2009/07/14  05:41             2,176 vga.drv
2009/07/14  05:41            12,704 WFWNET.DRV
              22 File(s)        700,380 bytes
               2 Dir(s)  75,927,420,928 bytes free

这时运行的是批处理。

通过cmd进入cmd控制台输入ping发现执行的不是ping命令,而是直接运行ping.bat ,也就是说可以通过.bat 覆盖cmd命令。这种机制很危险,如果有人侵入电脑,并将系统内部命令篡改成自己批处理,那就太悲剧了。 这种命令与脚本的混淆不会发生在powershell中,因为powershell有更安全的机制。

执行VB脚本文件

将下列命令保存为test.vbs

Set wmi = GetObject("winmgmts:")
Set collection = wmi.ExecQuery("select * from Win32_Process")
For Each process in collection
WScript.Echo process.getObjectText_
Next

执行 .\test.vbs 会遍历当前Win32进程,并把每个进程的详细信息通过窗口显示出来。
怎样让VB脚本的通过控制台输出呢?
Wscript //H:CScript
怎样还原VB脚本通过窗口输出呢?
WScript //H:WScript
在powershell中执行VB脚本

PS C:\PS> cscript.exe .test.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

instance of Win32_Process
{
        Caption = "System Idle Process";
        CreationClassName = "Win32_Process";
        CSCreationClassName = "Win32_ComputerSystem";
        CSName = "test-me-01";
        Description = "System Idle Process";
        Handle = "0";
        HandleCount = 0;
        KernelModeTime = "484113379271";
        Name = "System Idle Process";
        OSCreationClassName = "Win32_OperatingSystem";
        OSName = "Microsoft Windows 7 Enterprise |C:Windows|DeviceHarddisk0Partition2";
        OtherOperationCount = "0";
        OtherTransferCount = "0";
        PageFaults = 0;
        PageFileUsage = 0;
        ParentProcessId = 0;
        PeakPageFileUsage = 0;
        PeakVirtualSize = "0";
        PeakWorkingSetSize = 0;
        Priority = 0;
        PrivatePageCount = "0";
        ProcessId = 0;
        QuotaNonPagedPoolUsage = 0;
        QuotaPagedPoolUsage = 0;
        QuotaPeakNonPagedPoolUsage = 0;
        QuotaPeakPagedPoolUsage = 0;
        ReadOperationCount = "0";
        ReadTransferCount = "0";
        SessionId = 0;
        ThreadCount = 2;
        UserModeTime = "0";
        VirtualSize = "0";
        WindowsVersion = "6.1.7601";
        WorkingSetSize = "24576";
        WriteOperationCount = "0";
        WriteTransferCount = "0";
};

执行powershell脚本

Powershell拥有自己的脚本,扩展名为“.ps1”

PS C:\PS> echo "dir;Get-PSProvider;help dir" >test.ps1
PS C:\PS> Get-Content ./test.ps1
dir;Get-PSProvider;help dir
PS C:\PS> ./test.ps1

初次执行脚本时,可能会碰到一个异常:
File ” C:\PS\test.ps1″ cannot be loadedbecause the
execution of scripts is disabled on this system. Please see
“get-help about_signing” for moredetails.
At line:1 char:10
+ .test.ps1 <<<<

这是powershell的默认安全设置禁用了执行脚本,要启用这个功能需要拥有管理员的权限。

Powershell调用入口的优先级

别名:控制台首先会寻找输入是否为一个别名,如果是,执行别名所指的命令。因此我们可以通过别名覆盖任意powershell命令,因为别名的优先级最高。

函数:如果没有找到别名,会继续寻找函数,函数类似别名,只不过它包含了更多的powershell命令。因此可以自定义函数扩充cmdlet 把常用的参数给固化进去。

命令:如果没有找到函数,控制台会继续寻找命令,即cmdlet,powershell的内部命令。

脚本:没有找到命令,继续寻找扩展名为“.ps1”的Powershell脚本。

文件:没有找到脚本,会继续寻找文件,如果没有可用的文件,控制台会抛出异常。
The term ‘now’ is notrecognized as the name of a cmdlet, function, script file, or operable program.Chec
g of the name, or if a path was included, verify that the path is correct andtry again.
At line:1 char:4
+ now <<<<
+ CategoryInfo : ObjectNotFound: (now:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

参考:pstips

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值