标签: powershell

Powershell 缩写?

我有一个关于 PS 如何缩写各种命令的问题,特别是在初始化 PS 会话时。

假设我们从 Windows DOS 提示符开始:

C:\> powershell -exec bypass
Run Code Online (Sandbox Code Playgroud)

我似乎注意到您还可以键入以下内容,但它似乎仍在运行:

C:\> powershell -execution bypass

C:\> powershell -exec by

C:\> powershell -exec b
Run Code Online (Sandbox Code Playgroud)

如果键入的内容足够独特以匹配已知的有效命令/选项/标志/参数,PowerShell 是否会“猜测”用户尝试运行的命令?如果有任何文献可以解释这里发生的事情,那将非常有帮助。谢谢!

powershell

3
推荐指数
1
解决办法
2104
查看次数

为什么 DSC 找不到已安装的资源?

我正在尝试应用使用来自已安装模块的资源的 DSC 配置。但是,当我运行时Start-DscConfiguration,出现此错误:

PowerShell DSC 资源 ******** 不存在于 PowerShell 模块路径中,也未注册为 WMI DSC 资源。
+ CategoryInfo : InvalidOperation: (root/Microsoft/...gurationManager:String) [], CimException
+fullyQualifiedErrorId : DscResourceNotFound

但是,当我登录服务器并运行时Get-DscResource,缺少的资源就在那里。

为什么DSC找不到资源?

powershell dsc

3
推荐指数
1
解决办法
3995
查看次数

3
推荐指数
1
解决办法
312
查看次数

将敏感凭证放入 AWS 实例的 userdata 属性中

我正在将敏感凭据注入用户数据,但不确定这是否安全。

我正在使用 userdata 属性运行一个脚本,该脚本在实例上线时将其加入域

并像这样传递信用:

$ADUser = 'me'
$ADPassword = 'Pass'
$ADPassword  = $ADPassword | ConvertTo-SecureString -AsPlainText -Force
$ADCred = New-Object System.Management.Automation.PSCredential -ArgumentList $ADUser, $ADPassword

Add-Computer -Credential $ADCred -DomainName mydom.local -NewName testing
Restart-Computer -force
Run Code Online (Sandbox Code Playgroud)

我正在使用New-EC2Instancecmdlet 启动它并将此脚本作为 userdata 传入

我的凭据是否会出现在 aws 日志的错误输出中?或者别的地方?凭证在注入 PS 命令之前是安全的,我担心它在 AWS 中的位置。

security windows powershell amazon-ec2 amazon-web-services

3
推荐指数
1
解决办法
1604
查看次数

使用 import-Csv 导入 pc 列表并使用 powershell 脚本更改属性

我正在尝试编写一个powershell脚本来更改comment使用csv和的电脑列表中名为“ ”的 属性import-Csv。

在此处输入图片说明

这是我的脚本

$computers=Import-Csv -Path "C:\sds.csv" 
foreach ($item in $computers){ 
Set-ADComputer -identity $computers.DistinguishedName -add @{comment="bara"}
}
Run Code Online (Sandbox Code Playgroud)

并听到我的csv文件位于"C:\sds.csv"

在此处输入图片说明

但它跳到这个..

在此处输入图片说明

尝试谷歌搜索并在这里和那里更改,但不起作用!我对power-shell脚本了解甚少,但希望学习。有人可以指导我请什么我搞砸了?

scripting windows powershell active-directory csv

3
推荐指数
1
解决办法
1747
查看次数

PowerShell 导出到 CSV/工作流?

当服务器被 ping 时,结果地址将与库存进行比较,以便使库存保持最新。

我试图在下一个相应的单元格中将结果附加为“好”或“坏”。除了我设置的工作流程的结果总是“糟糕”之外,它有点工作。

CSV 包含从 Excel 清单中提取的服务器名称和 IP 地址,格式如下:

name,ipaddress
server1,10.1.24.51
server2,10.1.24.52
server3,10.1.24.53
server4,10.1.27.101
server5,10.1.27.102 <--- purposely wrong IP address for testing
Run Code Online (Sandbox Code Playgroud)

当前脚本:

$serverlist = Import-Csv -Path file.csv

ForEach ($server in $serverlist) {

    $thisservername = $server.name
    $thisserveripaddress = $server.ipaddress

    $pingdaddress = (Test-Connection -ComputerName $thisservername -Count 1 -ErrorAction SilentlyContinue -Verbose).IPV4Address.IPAddressToString

    if ($pingdaddress -ne $thisserveripaddress) {

        #$thisservername + " bad"
        $serverlist | Select-Object name,ipaddress, @{Name='connection';Expression={'bad'}} | `
        Export-Csv -Path file.csv -NoTypeInformation

    } else {

        #$thisservername + " good"
        $serverlist | Select-Object …
Run Code Online (Sandbox Code Playgroud)

powershell csv

3
推荐指数
1
解决办法
811
查看次数

PowerShell 执行策略与 VM Fleet 基准测试

目前我有一个 4 节点的 S2D 集群,我们将在几天内将其发送给我们的客户。之前需要做一些存储基准测试,之前找到了一篇关于压力测试的文章——VM Fleet https://www.starwindsoftware.com/blog/deploy-vm-fleet-to-benchmark-your-storage-system。

目前我正在尝试允许 PowerShell 使用 VM Fleet 脚本,但得到

Windows PowerShell 成功更新了您的执行策略,但该设置被在更具体范围内定义的策略覆盖

并且政策没有变化。我错过了什么吗?

此外,在所有集群节点上都执行了基准测试,我如何从 4 个节点中选择 3 个?

windows powershell

3
推荐指数
1
解决办法
184
查看次数

powershell:如果命令后结果为空,则输出一些文本

我正在制作一个脚本来获取 Outlook 中的帐户。为此,我检索 .pst 和 .ost 文件。但是如果没有任何文件,我想写一个类似“没有找到文件”的输出这是我的代码:

 get-childitem -path C:\users\*\AppData\Local\Microsoft\Outlook*  -recurse -force -dept 1 -include *.ost, *.pst | select-object fullname, @{name='Size_MB';expression={$_.length /1MB -as [int]}}, lastwritetime | Sort-Object -Property Size_MB -Descending | out-file c:\test.txt
Run Code Online (Sandbox Code Playgroud)

我尝试了很多东西,但没有任何效果......知道吗?

非常感谢!

powershell

3
推荐指数
1
解决办法
2万
查看次数

在powershell脚本中以参数作为参数读取文件

我试图做一个powershell脚本来读取一个带有参数的文件:

带有参数 ( params.ini) 的文件:

[domain]
domain="google.com"
[port]
port="80"
Run Code Online (Sandbox Code Playgroud)

读取文件的 Powershell 脚本:

Get-Content "params.ini" | ForEach-Object -Begin {$settings=@{}} -Process {$store = [regex]::split($_,'='); if(($store[0].CompareTo("") -ne 0) -and ($store[0].StartsWith("[") -ne $True) -and ($store[0].StartsWith("#") -ne $True)) {$settings.Add($store[0], $store[1])}}

$Param1 = $settings.Get_Item("domain")
$Param2 = $settings.Get_Item("port")

# Displaying the parameters
Write-Host "Domain: $Param1";
Write-Host "Port: $Param2";
Run Code Online (Sandbox Code Playgroud)

但我希望通过参数读取文件。例如:

> scriptExample.ps1 -file C:\params.ini
Run Code Online (Sandbox Code Playgroud)

我应该应用哪些更改?

scripting powershell

3
推荐指数
1
解决办法
1万
查看次数

PowerShell:格式化和排序环境变量

使用 PowerShell,我可以获得所有(当前进程)环境变量并对其进行格式化和排序:

gci env: | %{"{0}={1}" -f $_.Name,$_.Value} | sort
Run Code Online (Sandbox Code Playgroud)

这使:

a=foo
b=bar
c=baz
Run Code Online (Sandbox Code Playgroud)

但这给出了所有流程变量,我只想要用户变量,所以我这样做:

[Environment]::GetEnvironmentVariables("User") | %{"{0}={1}" -f $_.Name,$_.Value} | sort
Run Code Online (Sandbox Code Playgroud)

但这仅输出:

=
Run Code Online (Sandbox Code Playgroud)

该[Environment]::GetEnvironmentVariables("User")作品的东西之后是问题。

windows powershell environment-variables

3
推荐指数
1
解决办法
470
查看次数