我已经开始使用 PowerShell。
制表符大小为 8 个空格。
我不想要那个 - 我想要 4 个空格。
请问我该如何实现这个目标?
我注意到我的 Python 代码在 Windows 上运行的时间总是比在 Mac 上运行的时间长。有什么方法可以改善这一点吗?Windows机器非常强大,所以我不认为这是硬件问题(36核Xeon,96GB RAM,SSD)。Python 版本类似,我在 Windows 10 上运行 3.7.9,在 MacOS Mojave 上运行 3.7.7。
例如,一个简单的 print 语句需要花费 7 倍的时间。检查版本需要花费 12 倍的时间。
我卸载了 Windows 上的所有 pip 模块。
我正在尝试编写一些非常轻量级的脚本,其中快速运行时间很重要。
$ time python3 -c "print('hello world')"
hello world
real 0m0.030s
user 0m0.019s
sys 0m0.009s
$ time python3 --version
Python 3.7.7
real 0m0.015s
user 0m0.003s
sys 0m0.005s
Run Code Online (Sandbox Code Playgroud)
在 Windows 10 Powershell 上:
(Measure-Command {python -c "print('hello world')"}).TotalSeconds
0.2249363
(Measure-Command {python --version}).TotalSeconds
0.1776381
Run Code Online (Sandbox Code Playgroud)
编辑:我使用 SysInternals Process Monitor 捕获了事件,它显示了单次调用的 11,222 个事件python …
PowerShell 中的某些哈希表(例如使用 导入的Import-PowerShellDataFile哈希表)如果改为 PSCustomObject,则导航起来会容易得多。
@{
AllNodes = @(
@{
NodeName = 'SRV1'
Role = 'Application'
RunCentralAdmin = $true
},
@{
NodeName = 'SRV2'
Role = 'DistributedCache'
RunCentralAdmin = $true
},
@{
NodeName = 'SRV3'
Role = 'WebFrontEnd'
PSDscAllowDomainUser = $true
PSDscAllowPlainTextPassword = $true
CertificateFolder = '\\mediasrv\Media'
},
@{
NodeName = 'SRV4'
Role = 'Search'
},
@{
NodeName = '*'
DatabaseServer = 'sql1'
FarmConfigDatabaseName = '__FarmConfig'
FarmContentDatabaseName = '__FarmContent'
CentralAdministrationPort = 1234
RunCentralAdmin = $false
}
);
NonNodeData = …Run Code Online (Sandbox Code Playgroud) 这是一个简短的脚本,给出了相关行为的示例:
$foo = New-Object -TypeName PSCustomObject -Property @{
Username = "BSmith"
OU = "Finance"
Department = "Finance"
Description = "Accounts"
Office = "345 2nd St"
ServerName = "WFINANCE"
ShareName = "BSmith$"
LocalPath = "E:\Users\BSmith"
}
Write-Host $foo
Run Code Online (Sandbox Code Playgroud)
输出是:@{ServerName=WFINANCE; Office=345 2nd St; Username=BSmith; LocalPath=E:\Users\BSmith; OU=Finance; Description=Accounts; ShareName=BSmith$; Department=Finance}
正如您所看到的,输出变量的顺序与指定变量时给出的顺序不同。为什么会这样,如何使顺序一致?
我只有机会在一台计算机上对此进行测试,但输出的顺序在脚本的执行之间是一致的。我在声明属性时如何排序属性也没有什么区别。我无法测试并查看不同的机器是否会返回不同的订单。