mkdir vs New-Item,它是同一个cmdlet吗?

时间:2018-06-13 08:03:28

标签: powershell

我发现有两个不同的cmdlet:<html> <head> <style> .score { position:absolute; left:900; } #whole { background-color:black; color:white; width:80%; height:70%; position:relative; top:45; left:95; border:4px solid black; } .optns { width:40%; height:5% } #question { color:black; background-color:#f2f2f2; width:99%; height:20%; position:absolute; top:35; left:5; } .optn1 { position:absolute; top:190; left:120; } .optn2 { position:absolute; top:230; left:120; } .optn3 { position:absolute; top:270; left:120; } .optn4 { position:absolute; top:310; left:120; } .prev { position:absolute; down:80px; left:200px; } .next { position:absolute; down:80px; right:200px; } #timer { position:absolute; top:1000px; background-color:pink; color:blue; font-family:cursive; z-index:9999; } </style> </head> <body> <div id=whole> <center>TIMER HERE</center> <script> var fixed=new Date(); var fixedsecond=fixed.getSeconds(); var fixedmin=fixed.getMinutes(); function changetime() { var current=new Date(); var currentsecond=current.getSeconds(); var currentmin=current.getMinutes(); var m=currentmin-fixedmin; var s=(currentsecond-fixedsecond); if(s<0) { s=s+60 m=m-1; } if(m>=1) { clearInterval(t); prompt("TIME IS UP"); } document.getElementById("timer").innerHTML="<center id=timer><h1>"+m+":"+s +"</center></h1>"; } var t=setInterval(changetime,1000); </script> <span class="score">SCORE</span> <div id=question> Question here </div> </div> <button class="optn1 optns">OPTION 1</button> <button class="optn2 optns">OPTION 2</button> <button class="optn3 optns">OPTION 3 </button> <button class="optn4 optns">OPTION 4</button> <button class=prev>PREVIOUS</button> <button class="next">NEXT</button> </body> </html>data = Orange.data.Table('iris') attributes = [attr for attr in data.domain.attributes if attr.name != 'petal length'] new_domain = Orange.data.Domain(attributes, data.domain.class_vars, data.domain.metas) new_data = data.transform(new_domain) ,首先我认为New-Itemmkdir的别名之一,但它不是: enter image description here

尝试获取它的别名,mkdirNew-Itemmdmkdir

所以我有点困惑,这个cmdlet之间有什么区别,因为powershell引用给了我几乎相同的页面:mkdirNew-Item 但是ni位于New-ItemNew-Item Microsoft.PowerShell.Management,但是相同(或不是?)!为什么PowerShell中有两个相同的cmdlet?

1 个答案:

答案 0 :(得分:10)

New-Item是一个cmdlet,在程序集中定义,它创建新对象 - 文件和目录。 mkdir是一个调用New-Item来专门创建目录的函数。它是为了方便熟悉Windows CMD或unix shell命令mkdir

的shell用户而提供的

要查看mkdir使用Get-Content Function:\mkdir的定义。在一些参数和管道管理之后,您可以看到它调用了New-Item。使用PS 5.0:

$wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('New-Item', [System.Management.Automation.CommandTypes]::Cmdlet)
$scriptCmd = {& $wrappedCmd -Type Directory @PSBoundParameters }

以下两个命令都将在foo的根目录中创建名为C:\的新目录。第二种形式对于来自其他贝壳的人来说是熟悉的(并且更短到类型)。第一种形式是惯用的PowerShell。

PS> New-Item -Path C:\foo -Type Directory
PS> mkdir C:\foo

因为mkdir-Type Directory参数进行了硬编码,所以它只能用于创建目录。没有等效的mkfile内置函数。要创建文件,请使用New-Item -Type File或其他cmdlet,例如Out-File