Проблемы с сортировкой Powershell - PullRequest
0 голосов
/ 28 октября 2019

Мой код сейчас организует вывод по $ Service_Name, а не по $ Start_Order. Вывод в правильном формате, но не в правильном порядке.

Я пытался сделать свойства $ Sorted переменными, но когда я использую $ StartProperties ИЛИ $ Sorted, оба вывода упорядочены по Service_Name, а не по Start_Order

 function StartServer{

    Param (
        [Parameter (Mandatory=$true)] [STRING] $Region,
        [Parameter (Mandatory=$true)] [STRING] $Env,
        #[STRING] $Env,
        [Parameter (Mandatory=$true)] [STRING] $ScriptName, #$ScriptName 
        [Parameter (Mandatory=$true)] [STRING] $Server_Name
        #[STRING] $Server,
        #[STRING] $Services
    )
    #Write-Output ("Region: "+ $Region + " Env: " + $Env  + " ScriptName: " + $ScriptName + " Server_Name: " + $Server)

    #$startDate = Get-Date;

    $Sourcefile = "C:\Users\Powershell Scripts\File_CLEAN10182019.csv"
    $StartProperties  = (Import-Csv $Sourcefile) |select Server_Name,Service_Name, Start_Order, Start_Flag, Start_Wait  | Sort-Object -Property Server_Name, {[int]$_.Start_Order}


    foreach($line in $StartProperties){
        if ([string]$line.'Server_Name' -eq $Server_Name){ 
        $Server_Name = [string]$line.'Server_Name'
        $Service_Name = [string]$line.'Service_Name'
        $Start_Order = [string]$line.'Start_Order'
        $Start_Wait= [string]$line.'Start_Wait' 

        $file = #"Matches? " + $Server_Name
                "Start " + $Service_Name + "  " + " Timeout " + $Start_Wait

        Write-Output $file 

        }


    }
}
StartServer

Вывод прямо сейчас организованданные по Service_Name (DISP01, DIS02, DISP03), что приводит к неправильному порядку.

OUTPUT USING $StartProperties 

Supply values for the following parameters:
Region: test
Env: test
ScriptName: test
Server_Name: APSGCOGAPP102
Start IIS RESET f50 WEB       Timeout 
Start Analytics CM:9000       Timeout 5
Start Analytics DISP01:9100   Timeout 5
Start Analytics DISP02:9200   Timeout 5
Start Analytics DISP03:9300   Timeout 5
Start Analytics DISP04:9400   Timeout 5
Start Analytics DISP05:9500   Timeout 5
Start Analytics DISP06:9600   Timeout 5
Start Analytics DISP07:9700   Timeout 5
Start Analytics DISP08:9800   Timeout 5
Start Analytics DISP09:9900   Timeout 5
Start Analytics DISP10:10000   Timeout 5




Вывод должен возвращаться в следующем порядке (по Start_Wait). Таким образом, порядок должен быть

Analytics DISP01:9100, 
          DISP02:9200, 
          DISP06:9600 , 
          DISP04:9400,  
          DISP08:9800, 
          DISP03:9300, 
          DISP07:9700, 
          DISP05:9500, 
          DISP09:9900, 
          DISP10:10000, 
          CM:9000
(raw data)
Server_Name      Service_Name             Start_Order
USOHCOGAPP902   Analytics DISP01:9100        2
                Analytics DISP02:9200        3
                Analytics DISP06:9600        4
                Analytics DISP04:9400        5
                Analytics DISP08:9800        6
                Analytics DISP03:9300        7
                Analytics DISP07:9700        8
                Analytics DISP05:9500        9
                Analytics DISP09:9900        10
                Analytics DISP10:10000       11
                Analytics CM:9000            12
                IIS RESET for WEB           (blank)

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Output to $StartProperties :


Environment      : DEV
Server_Name      : DEFRCLIENT903
Purpose          : APP
Service_Name     : Analytics DISP06:9600
Install_Location : D$\Program Files\analytics\DISP06
Start_50der      : 4
Stop_50der       : 1
Start_Flag       : 0
Stop_Flag        : 0
Start_Wait       : 5
Stop_Wait        : 5
/bin64           : 
/wlp             : 


Environment      : DEV
Server_Name      : DEFRCLIENT903

Purpose          : APP
Service_Name     : Analytics DISP07:9700
Install_Location : D$\Program Files\analytics\DISP07
Start_50der      : 8
Stop_50der       : 1
Start_Flag       : 0
Stop_Flag        : 0
Start_Wait       : 5
Stop_Wait        : 5
/bin64           : 
/wlp             : 

1 Ответ

1 голос
/ 28 октября 2019

Кажется немного излишним иметь все эти параметры, где вы используете только один.

Если ваш CSV выглядит примерно так (я немного перемешал строки):

"Server_Name","Service_Name","Start_Order","Start_Flag","Start_Wait"
"USOHCOGAPP902","Analytics DISP08:9800","6","",""
"USOHCOGAPP902","Analytics DISP01:9100","2","",""
"APSGCOGAPP102","Analytics DISP01:9100","2","",""
"USOHCOGAPP902","Analytics DISP06:9600","4","",""
"USOHCOGAPP902","Analytics DISP04:9400","5","",""
"APSGCOGAPP102","Analytics DISP05:9500","9","",""
"APSGCOGAPP102","Analytics DISP09:9900","10","",""
"USOHCOGAPP902","Analytics DISP03:9300","7","",""
"USOHCOGAPP902","Analytics DISP02:9200","3","",""
"APSGCOGAPP102","Analytics CM:9000","12","",""
"USOHCOGAPP902","Analytics DISP05:9500","9","",""
"APSGCOGAPP102","Analytics DISP06:9600","4","",""
"USOHCOGAPP902","Analytics DISP09:9900","10","",""
"APSGCOGAPP102","Analytics DISP10:10000","11","",""
"USOHCOGAPP902","Analytics DISP07:9700","8","",""
"USOHCOGAPP902","Analytics DISP10:10000","11","",""
"USOHCOGAPP902","Analytics CM:9000","12","",""
"USOHCOGAPP902","IIS RESET for WEB","","",""
"APSGCOGAPP102","Analytics DISP08:9800","6","",""
"APSGCOGAPP102","Analytics DISP04:9400","5","",""
"APSGCOGAPP102","Analytics DISP03:9300","7","",""
"APSGCOGAPP102","Analytics DISP02:9200","3","",""
"APSGCOGAPP102","Analytics DISP07:9700","8","",""
"APSGCOGAPP102","IIS RESET f50 WEB","","",""

Тогда ваша функция может быть записана в виде:

function Get-ServerStart{
    Param (
        [Parameter (Mandatory=$true)] 
        [string] $Server_Name
    )

    $Sourcefile = "C:\Users\Powershell Scripts\File_CLEAN10182019.csv"
    Import-Csv $Sourcefile | 
        Where-Object { $_.Server_Name -eq $Server_Name } |
        Select-Object Server_Name,Service_Name, Start_Order, Start_Flag, Start_Wait  | 
        Sort-Object -Property Server_Name, {[int]$_.Start_Order}
}

Get-ServerStart -Server_Name 'USOHCOGAPP902' | Format-Table -AutoSize

Это выведет на консоль:

Server_Name   Service_Name           Start_Order Start_Flag Start_Wait
-----------   ------------           ----------- ---------- ----------
USOHCOGAPP902 IIS RESET for WEB                                       
USOHCOGAPP902 Analytics DISP01:9100  2                                
USOHCOGAPP902 Analytics DISP02:9200  3                                
USOHCOGAPP902 Analytics DISP06:9600  4                                
USOHCOGAPP902 Analytics DISP04:9400  5                                
USOHCOGAPP902 Analytics DISP08:9800  6                                
USOHCOGAPP902 Analytics DISP03:9300  7                                
USOHCOGAPP902 Analytics DISP07:9700  8                                
USOHCOGAPP902 Analytics DISP05:9500  9                                
USOHCOGAPP902 Analytics DISP09:9900  10                               
USOHCOGAPP902 Analytics DISP10:10000 11                               
USOHCOGAPP902 Analytics CM:9000      12

Я переименовал функциюдля соответствия системе имен Verb-Noun в PowerShell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...