标签: powershell

AzureRM PowerShell:如何在Web应用程序部署插槽上设置自定义域?

所以这就是我为webapp做的方式

Set-AzureRmWebApp -ResourceGroupName $ResourceGroup -Name $WebAppName -HostNames @($Alias, $Url);
Run Code Online (Sandbox Code Playgroud)

不适用于网络应用中的广告位,例如:

Set-AzureRmWebApp -ResourceGroupName $ResourceGroup -Name $SlotName -HostNames @($SlotAlias, $SlotUrl);
Run Code Online (Sandbox Code Playgroud)

并失败:

找不到资源组“ resgrpname”下的资源“ Microsoft.Web / sites / sitename-staging”。

然后有这个,Set-AzureRmWebAppSlot但是它没有-HostNames选择。

任何帮助将不胜感激。

powershell azure-web-sites azure-powershell azure-resource-manager

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

在后台运行exe

我尝试过以下方法:

Start-Process powershell -ArgumentList "C:\Program Files\Prometheus.io\prometheus.exe" -WindowStyle hidden
Run Code Online (Sandbox Code Playgroud)
Invoke-Command -ComputerName . -AsJob -ScriptBlock {
    'C:\Program Files\Prometheus.io\prometheus.exe'
}
Run Code Online (Sandbox Code Playgroud)
Start-Job -Name "prometheus" -ScriptBlock {Get-Process prometheus.io}
Run Code Online (Sandbox Code Playgroud)
Start-Job {& .\prometheus.exe}
Run Code Online (Sandbox Code Playgroud)

有时它会启动但在启动后立即终止.如果我手动启动它可以正常工作.

如何在后台保持我的进程存活?


编辑:

它没有用,因为我不在我的进程目录中,需要一个没有设置pathfile的文件.

powershell

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

如何使用Powershell Pipeline避免大型物体?

我正在使用自定义函数基本上在8TB驱动器(数千个文件)上执行DIR命令(递归文件列表).

我的第一次迭代是:

$results = $PATHS | % {Get-FolderItem -Path "$($_)" } | Select Name,DirectoryName,Length,LastWriteTime 
$results | Export-CVS -Path $csvfile -Force -Encoding UTF8 -NoTypeInformation -Delimiter "|"
Run Code Online (Sandbox Code Playgroud)

这导致了一个巨大的$ results变量,并通过强制PowerShell进程将系统降低到爬行速度,以便在处理过程中使用99%-100%的CPU.

我决定使用管道的功能直接写入CSV文件(可能释放内存),而不是保存到中间变量,并提出了这个:

$PATHS | % {Get-FolderItem -Path "$($_)" } | Select Name,DirectoryName,Length,LastWriteTime | ConvertTo-CSV -NoTypeInformation -Delimiter "|" | Out-File -FilePath $csvfile -Force -Encoding UTF8
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常(CSV文件正在增长......并且CPU似乎稳定)但是当CSV文件大小达到~200MB时突然停止,并且控制台的错误是" 管道已经停止 ".

我不确定CSV文件大小与错误消息有什么关系,但我无法使用任何一种方法处理这个大型目录!有关如何允许此过程成功完成的任何建议?

powershell pipeline export-to-csv

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

一次设置多个属性-与VB的With语句等效,以提供隐含的对象上下文

仅出于学习目的。

假设我有一个变量,在此示例中为文本框,我如何一次又一次设置许多属性而又不必一遍又一遍地输入变量名。

我尝试了一些我自己的事情,其中​​一些工作出于某些奇怪的原因。

这个例子有效。中断用于缩短循环。

 $Textbox | % {
    $_.Text = "Hello World"
    $_.Background = "Black"
    $_.Foreground = "Green"
    Break
 }
Run Code Online (Sandbox Code Playgroud)

这两个示例不起作用,在这里只是为了查看我的尝试。

有和没有“ $ _。”,而不是“。”。我用过“ =”和“ + =”,但都没有用。

 $Textbox.@{
    Text = "Hello World"
    Background = "Black"
    Foreground = "Green"
 }

 $Textbox.({
    $_.Text = "Hello World"
    $_.Background = "Black"
    $_.Foreground = "Green"
 })
Run Code Online (Sandbox Code Playgroud)

可能有一种更简单的方法,我在Google上还没有遇到任何问题。

syntax powershell

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

在Windows防火墙中允许WinRM

我使用的是Windows 7机器,安装了windows power shell.如何确保将Windows防火墙配置为允许来自工作站的Windows远程管理连接.例如:netsh advfirewall firewall set rule name ="Windows Remote Management(HTTP-In)"profile = public protocol = tcp localport = 5985 remoteip = localsubnet new remoteip = any

我正在按照上面的命令,但无法配置它.

windows powershell winrm

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

Powershell,重命名项目无法按预期工作

我有一堆以以下模式命名的jpg图像文件:

0001-rand01_012.jpg
0002-rand03_034.jpg
Run Code Online (Sandbox Code Playgroud)

我想通过删除前5个字符来重命名它们以获得表格:

rand01_012.jpg
Run Code Online (Sandbox Code Playgroud)

等等..

我使用以下命令:

Get-ChildItem | Rename-Item -NewName {$_.name.Substring(5)}
Run Code Online (Sandbox Code Playgroud)

当与-whatif标志一起使用时,我得到预期的消息:

Performing the operation "Rename File" on target "Item: C:\Users\xxxx\Documents\xx xx\temp2\0123-rand16_030.jpg Destination: C:\Users\
xxxx\Documents\xx xx\temp2\rand16_030.jpg".
Run Code Online (Sandbox Code Playgroud)

但是删除whatif给我这种类型的错误:

Rename-Item : The input to the script block for parameter 'NewName' failed. Exception calling "Substring" with "1" argument(s): "startIndex cannot be 
larger than length of string.
Run Code Online (Sandbox Code Playgroud)

其次是一堆:

Rename-Item : Cannot create a file when that file already exists.
Run Code Online (Sandbox Code Playgroud)

重命名文件本身时会删除随机数量的字符,而不是按预期的5个字符。所以他们最终像:

01.jpg
01.jpg
.
.
.
d14_001.jpg
Run Code Online (Sandbox Code Playgroud)

等等

过去,我已经使用此命令成功重命名了此类文件。我得到如此随机结果的事实使我拔头发。

powershell rename-item-cmdlet

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

如何在PowerShell中将完整月份(法语)解析为datetime对象?

我有一个日期字符串,我想解析为datetime对象.我有这个:

$invoice = '9 février 2017'
[datetime]::parseexact($invoice, 'dd MMMM yyyy', $null)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.如何将月份(总是法国BTW)转换为日期时间对象?

powershell datetime

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

ConvertFrom-JSON到object

它看起来像我期待这种方式工作的方式不是.我想要返回多个对象,但它似乎只返回一个.我不知道如何做到这一点.

一个非常简单的JSON文件:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "value": "sa01"
    },
    "virtualNetworkName": {
      "value": "nvn01"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想动态地将参数及其值添加到一个漂亮的pscustomobject中(对于上面的数据看起来如下):

ParameterName      | Value
===========================
storageAccountName | sa01
virtualNetworkName | nvn01
Run Code Online (Sandbox Code Playgroud)

我不明白为什么以下返回一个对象:

$TemplateParametersFile = "C:\Temp\deploy-Project-Platform.parameters.json"
$content = Get-Content $TemplateParametersFile -Raw

$JsonParameters = ConvertFrom-Json -InputObject $content
$JsonParameters.parameters | Measure-Object
Run Code Online (Sandbox Code Playgroud)

在写这篇文章的同时,我最终找到了一个能够得到我想要的解决方案,我将在答案部分发布.随意上学,改进......

powershell json azure

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

打印传递给cmdlet的所有参数

有没有一种简单的方法可以将PowerShell cmdlet的所有参数都作为哈希表?我希望能够通过转储所有参数Write-Verbose(用于调试问题).我想做的事:

  Function verb-noun {
      Param($p1, $p2, $p2)

      $parameters = ... # Get all parameters as hash
      $parameters.Keys | % { Write-Verbose "$_=$parameters.Item($_)" } 
      ...
  }
Run Code Online (Sandbox Code Playgroud)

powershell

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

查找以'n'开头的数组中的用户名

我有一个AD的哈希表,包含用户名和服务帐户.我正在尝试查找所有服务帐户.所有用户名都由其首字母(如"r")和带有"s"的服务帐户唯一标识.例如:r398831和s882443.这是我拥有的数组的示例:

  $null = $usrArr.Add([pscustomobject] @{
    sName = $user.name
    sGivenName = $user.GivenName
    sSurname = $user.Surname
    sEnabled = $user.Enabled
   })

$lastSeen = $usrArr | select * | Where {$_.sEnabled -eq $true}
$lastSeen = $lastSeen | Sort-Object -Unique -Property sName
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用-contains和-match但它似乎没有拉回我追求的东西:

$svcAcc = $lastSeen | where-object {$_.sName -like "s"}
Run Code Online (Sandbox Code Playgroud)

我是否必须为每个执行一个或者我刚搞砸了我的语法?我想也许我需要排序 - 对象,但必须有一个更简单的方法来拉出一些基本的东西.感谢任何有关它的建议.

提前致谢 :)

最好,皮特

sorting powershell powershell-5.0

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